转换为DV AVI Type-1视频

时间:2011-04-01 13:23:32

标签: ffmpeg directshow avi

我正在开发一个需要转换mpg,avi,wmv格式的项目。供应商要求格式为DV AVI Type 1.这是Windows Movie Maker在拍摄摄像机时提供的格式。

我需要这种格式的某些供应商工具,假设用户正在从设备捕获数据,或者现有文件的导入采用这种格式。

我知道这两个工具可以做到这一点,但我希望合并一个独立的库/命令行界面,以便我可以将编码过程包装在我自己的应用程序中。

http://paul.glagla.free.fr/dvdate_en.htm http://www.stoik.com/products/video/STOIK-Video-Converter/

上次我检查过FFMPEG不支持这种转换......只是从DV AVI1到DV AVI2的反向。

我已阅读此资源,但不知道如何将其合并到ffmpeg中 http://msdn.microsoft.com/en-us/library/dd388641(v=VS.85).aspx

是否有人尝试将格式X转换为DV AVI Type 1?

1 个答案:

答案 0 :(得分:1)

我有点不确定你要解决的确切问题。听起来你想将mpg,avi,wmv文件编码为DV AVI类型1,并且你想使用ffmpeg作为解决方案的一部分。

微软DV视频编码器和DV多路复用器DirectShow过滤器将视频和音频组合成1型DV AVI所需的单个视频+音频DV流。

我对ffmpeg不太熟悉,但我不确定为什么你需要它来解决你的问题。 DirectShow可以处理各种输入格式。从FAQ可以看出,ffmpeg可以从DirectShow过滤器获取输入,但不能将数据写入DirectShow过滤器。

在没有ffmpeg的情况下单独使用DirectShow进行转换是最简单的:

  • 创建DirectShow图形(CoCreateInstance获取IGraphBuilder)。
  • 从输入文件(IGraphBuilder :: AddSourceFilter)
  • 创建源过滤器
  • 创建DV编码器过滤器(CoCreateInstance)
  • 将DV编码器过滤器添加到图形(IFilterGraph :: AddFilter)
  • 将视频源引脚连接到dv编码器(IGraphBuilder :: Connect)

然后同样:

  • 将新的dv muxer连接到输出 dv视频编码器和音频 从源过滤器输出(你可以 需要一个中间过滤器来 将音频压缩到右侧 格式)。
  • 连接dv的输出 muxer到新的avi mux过滤器。
  • 连接avi mux的输出 一个新的文件编写器过滤器设置 你的目的地档案。
  • 使用IMediaControl和IMediaEvents运行图表,将输入文件转换为输出文件。

如果我误解了你的问题,那么你应该能够构建一个不同的图形,它将转换为DV AVI类型1或2。对于写入类型2,你不需要使用dv muxer。

在编写任何代码之前,所有这些都可以使用GraphEdit或类似工具预先轻松测试。 GraphEdit随Windows SDK一起提供。 GraphStudio是一个开源替代品,但也有其他。出于开发目的,您还可以在GraphEdit中构建图形或类似图形,然后加载它并在您自己的测试应用程序中运行它(参见http://msdn.microsoft.com/en-us/library/dd390649(v=vs.85).aspx

有关基本入门信息,请参阅:   - DirectShow上的维基百科页面   - How can I learn a DirectShow programming?   - Where can I find a thorough DirectShow tutorial?