OpenCV encoding to H264
OpenCV encoding to H264
我想将图像编码为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位(,因此我不能排除潜在的编解码器的任何问题 - 也没有对其他组合进行全面测试。由于这似乎是一个普遍的问题(有许多误解(,所以我希望这很有用。
- "error: no matching function for call to"构造函数错误
- 调用专用模板时出错"no matching function for call to [...]"
- C++ Singleton - Prevent ::instance() to variable
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- Visual Studio Code "undefined reference to `WinMain@16'"
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- Python str to C++ to Python str
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- "no matching function for call to 'Vector::Vector'"错误
- vector<vector<double>> to mxArray using memcpy
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- 当覆盖存在时调用基本虚拟"binded to object"函数
- OpenGL VBO Indexing ( How to compute Index Array)
- 为什么我会" void value not ignored as it ought to be"?
- OpenCV encoding to H264