OpenCV encoding to H264

OpenCV encoding to H264

本文关键字:H264 to encoding OpenCV      更新时间:2023-10-16

我想将图像编码为opencv中的H264视频。

作为我的图像跟踪软件的一部分,我使用Visual Studio 2017 C 使用OpenCV 3.4(64位(中的VideoWriter。我使用ffmpeg进行手动编码,并且在OpenCV中,我认为这是最好的选择。我的OpenCV版本表示它已与FFMPEG编辑,我可以验证它加载OpenCV_FFMPEG340_64.DLL。

解码H264(AVC1(是绝对不错的,包括专门使用FFMPEG API时。但是编码MJPG或原始图像以外的任何内容均行不通:videOwriter.open((主要返回false,在某些情况下,它只会写一个空头或小标头,但不会写框架。我不仅尝试了FFMPEG API,还尝试了任何可用的API。将控制台/调试输出重定向到VC中的中间窗口,未提供OpenCV或FFMPEG的任何消息。

使用ffmpeg在以前的OPENCV上有许多帖子,包括(Cisco(OpenH264库以及使用此功能的困难。我尝试了许多选项,安装了编解码器包,包括H264,FFMPEG静态版本,Cisco OpenH264库,设置路径等,甚至尝试了在OPENCV中展示的低级FFMPEG库功能,例如CvCreatEvideWiDeWriter,以及使用不同的视频容器(AVI,MPG,MPG,MPG,MPG,MPG,MPG,MPG,MPG,mp4(以及四频率字符串。

我简直不敢相信,在2018年,具有FFMPEG支持的Great OpenCV除了Arcane MJPG或原始图像外无法编码任何内容。如果使用ffmpeg肯定应该可以使用一组重要的功能?

尽管我认为这应该有效,但我的下一个最佳选择是使用一个单独的FFMPEG库,讽刺地将另一个ffmpeg.dll添加到我想象的解决方案中。任何建议都赞赏!

代码片段(使用任何视频编码API(:

VideoWriter writer;
int codec = VideoWriter::fourcc('X', '2', '6', '4');
writer.open("test.avi", codec, 30, colorImage.size(), true);
writer.write(colorImage);
writer.release();

回答我自己的问题 - 谢谢您的先前建议 - 我现在设法创建并写下了H264视频的框架,而无需进行任何重新编译。这就是我使用的:

  • 使用OpenCV版本3.4.1
  • 在与exe同一文件夹中:opencv_ffmpeg341_64.dll(提供OpenCV(
  • 在同一文件夹中:OpenH264-1.7.0-win64.dll(可从:https://github.com/cisco/cisco/openh264/releases获得(
  • 使用OpenCV VideoWriter类,省略特定编码API
  • 容器:MP4
  • 编解码器fourcc字符串:" H264"

我格式化了我的机器(Windows 10 64位(,因此我不能排除潜在的编解码器的任何问题 - 也没有对其他组合进行全面测试。由于这似乎是一个普遍的问题(有许多误解(,所以我希望这很有用。