C++ 如何从YUV图像流生成VBR视频?

C++ 如何从YUV图像流生成VBR视频?,c++,mpeg,yuv,C++,Mpeg,Yuv,我的硬件(视频采集卡)提供了YV12(YUV420)格式的图像,我正试图从中生成视频。我在Windows下使用C++,我想从那个流中生成MPEG-4VBR视频,但我不知道应该从哪里开始…(我需要它是VBR,因为它是一个安全摄像头,会有很多重复帧) 有这样的图书馆吗?会为您做的。查看文档,他们在文档中讨论如何编码原始YUV420P帧。您可以使用ffmpeg的内置mpeg 4编码器,也可以使用它与其他库(如xvid和x264)进行接口 最简单的方法是使用命令行FFMPEG可执行文件,并从C++程序中

我的硬件(视频采集卡)提供了YV12(YUV420)格式的图像,我正试图从中生成视频。我在Windows下使用C++,我想从那个流中生成MPEG-4VBR视频,但我不知道应该从哪里开始…(我需要它是VBR,因为它是一个安全摄像头,会有很多重复帧) 有这样的图书馆吗?

会为您做的。查看文档,他们在文档中讨论如何编码原始YUV420P帧。您可以使用ffmpeg的内置mpeg 4编码器,也可以使用它与其他库(如xvid和x264)进行接口


最简单的方法是使用命令行FFMPEG可执行文件,并从C++程序中调用它。另一种选择是使用libavformat和libavcodec(ffmpeg库)。这将需要更多的工作,但您可以对过程进行更多的控制(例如,如果您需要对视频数据进行任何处理)。

我可以将所有帧存储为原始YUV文件,然后使用ffmpeg压缩,但这并不是我想要的。我希望将YUV帧流式传输到库中,而不必将其存储在物理驱动器上。我想这是不容易做到的实时。。。感谢ffmpeg文档说您可以使用管道作为输入,在命令行上使用
-f yuv4mpegpipe
作为选项,但我从未尝试过。另一种选择是直接使用libavcodec和libavformat。请参见此示例:,特别是
video\u encode\u example()
函数。查找注释
/*Prepare dummy image*/
,您可以用自己的数据替换它。