如何从 YUV 图像流生成 VBR 视频?
我的硬件(视频捕获卡)为我提供了 YV12 (YUV 420) 格式的图像,我正在尝试从中生成视频。我在 Windows 下使用 C++,我想从该流生成 mpeg-4 VBR 视频,但我不知道应该从哪里开始...(我需要它是 VBR,因为它是一个安全摄像头,并且会有一个很多重复的帧) 有没有图书馆可以做这样的事情?
My hardware (video capture card) gives me the images in YV12 (YUV 420) format and I am trying to generate a video from it. I am using C++ under windows and I would like to generate a mpeg-4 VBR video from that stream but I dont know where I should start... (I need it to be VBR because it is a security camera and there will be a lot of repeated frames)
Is there any library that does something like this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
ffmpeg 将为您完成此操作。查看文档的这部分,其中讨论了对原始 YUV 420P 帧进行编码。您可以使用 ffmpeg 的内置 mpeg 4 编码器,或者它还允许您与 xvid 和 x264 等其他库进行交互。
处理此问题的最简单方法是仅使用命令行 ffmpeg 可执行文件并从 C++ 程序中调用它。另一种选择是使用 libavformat 和 libavcodec(ffmpeg 库)。这将需要更多的工作,但可以让您更好地控制流程(例如,如果您需要对视频数据进行任何处理)。
ffmpeg will do this for you. Check out this part of the documentation where they talk about encoding raw YUV 420P frames. You can use ffmpeg's built-in mpeg 4 encoder, or it also allows you to interface with other libraries like xvid and x264.
The easiest way to handle this would be to just use the command line ffmpeg executable and just call it from your C++ program. Another option is to use libavformat and libavcodec (ffmpeg libraries). This will require more work, but give you more control over the process (for instance, if you need to do any processing of the video data).