如何在Visual C中编码视频?

时间:2009-07-15 03:59:25

标签: c winapi video-encoding

我有一个视频解密库,可以解码过时的视频格式,并通过回调函数返回BMP中的视频帧和WAV中的音频。现在我需要在Windows下以任何标准格式编码新视频。

这可能是标准的方法吗?我正在使用Win32 / C.我猜Windows有自己的编码库和驱动程序,我不需要使用FFMPEG。任何指向示例代码或至少要查看的库的指针都将非常有用。

编辑:我接受。 FFMPEG是最简单的方法。

3 个答案:

答案 0 :(得分:5)

在Windows上,您有两种原生选择。

  1. 古老的Windows Multimedia图书馆太古老而无法认真考虑,但确实有Video Compression Manager
  2. 然后是DirectShow
  3. 通过DirectShow肯定可行,但你最好享受COM编程以及Filters,Graphs和Monikers的概念(哦,我的)。有关速成课程,请参阅本教程:

    Recompressing an AVI File

    MSDN documentation

    更简单的方法确实是使用像FFMPEGVLC这样的库。

答案 1 :(得分:4)

为了拯救自己的心痛,我回应了弗兰克关于使用FFMPEG的建议。使用正确的参数执行单独的FFMPEG流程将是实现编码目标的最简单方法。

您的其他选择包括:

libavcodec - FFMPEG中使用的中央库。我警告说似乎没有很多可用的libavcodec的Windows二进制文件,所以你可能需要自己编译,至少需要Cygwin或MingW设置。

ffdshow-tryouts - 基于libavcodec实现为DirectShow过滤器的视频编解码器库。他们似乎有一个API来操纵它,但它是一个.NET库。

答案 2 :(得分:1)

我建议查看VirtualDub源代码。这是一个众所周知的使用VFW的编码器。您可以从该软件中获得一些想法。