以编程方式将 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 文件头添加到视频流的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式识别功能体

怎么查看一个视频文件的编码方式?

包含滤波器系数的 C++ 头文件 (.h) 或 C 中的 .h 文件

51编程里的子程序头文件可以直接移植到stm32上吗

视频格式 AVI TP MPG有啥区别吗

将系统头搜索路径添加到 Xcode