以编程方式将 AVI 文件头添加到视频流
Posted
技术标签:
【中文标题】以编程方式将 AVI 文件头添加到视频流【英文标题】:Programmatically add AVI file header to video stream 【发布时间】:2013-03-05 00:39:40 【问题描述】:我有一个采集设备(模拟数字转换器:AverMedia USB Capture Card)。 当我想在 C# 中使用 DirectShowLib 录制视频时,我只接收帧。我可以使用 RawVideo Player 录制帧并播放文件。如何创建像 AVI 这样的标准视频文件头?当我想压缩数据时会出现第二个问题。当我使用压缩时,我根本无法阅读。
这是我的工作 GraphEdit 架构:
如何创建带有标头等的标准 AVI 或 MPEG 文件?
【问题讨论】:
【参考方案1】:可播放文件具有一定的结构,捕获的数据通常通过所谓的多路复用器过滤器写入此类文件。对于 AVI 格式,标准过滤器是AVI Mux Filter。它在输入上获取视频/音频,并在输出上转换为文件兼容的流。如果/当此输出连接到 File Writer Filter 时,后者会生成具有正确标题的文件。
【讨论】:
【参考方案2】:看看this,你应该可以用它来设置一个Avi对象,然后用你的框架AddFrame()来创建一个avi。
【讨论】:
不幸的是我做不到。因为代码只是将传入的帧保存到单个文件中。我可以将视频文件头添加到保存的帧吗?我知道帧的宽度、高度和 fps。有可能吗? 我下载了 DirectShow.NET 示例并打开了 Samples\Capture\DxTuner 项目。在项目中,您可以选择视频压缩器并使用 DirectShow 功能创建标准 AVI 文件。它将捕获设备记录到 AVI 文件中。以上是关于以编程方式将 AVI 文件头添加到视频流的主要内容,如果未能解决你的问题,请参考以下文章