我有一个视频解密器库,可以解码过时的视频格式,并通过回调函数返回 BMP 中的视频帧和 WAV 中的音频。现在我需要在 windows 下以任何标准格式对新视频进行编码。
执行此操作的标准方法可能是什么?我正在使用 Win32/C。我猜 Windows 有自己的编码库和驱动程序,我不需要使用 FFMPEG。任何指向示例代码或至少指向要查看的库的指针都将非常有帮助。
编辑:我接受。FFMPEG 是最简单的方法。
我有一个视频解密器库,可以解码过时的视频格式,并通过回调函数返回 BMP 中的视频帧和 WAV 中的音频。现在我需要在 windows 下以任何标准格式对新视频进行编码。
执行此操作的标准方法可能是什么?我正在使用 Win32/C。我猜 Windows 有自己的编码库和驱动程序,我不需要使用 FFMPEG。任何指向示例代码或至少指向要查看的库的指针都将非常有帮助。
编辑:我接受。FFMPEG 是最简单的方法。
在 Windows 上,您有两个本机选择。
这当然可以通过 DirectShow 实现,但您最好享受 COM 编程以及过滤器、图形和名字对象的概念(哦,天哪)。有关速成课程,请参阅本教程:
和MSDN 文档。
为了不让自己心痛,我赞同弗兰克关于只使用 FFMPEG 的建议。使用正确的参数执行单独的 FFMPEG 进程将 100% 成为实现编码目标的最简单方法。
您的其他选择包括:
libavcodec - FFMPEG 中使用的中央库。我警告说似乎没有很多可用的 libavcodec 的 Windows 二进制文件,因此您可能必须自己编译,这至少需要安装 Cygwin 或 MingW。
ffdshow-tryouts - 一个视频编解码器库,实现为基于 libavcodec 的 DirectShow 过滤器。他们似乎确实有一个用于操作它的API,但它是一个 .NET 库。
我建议查看VirtualDub源代码。这是一个众所周知的使用 VFW 的编码器。您也许可以从该软件中获得一些想法。