c++ - cv::VideoWriter 产生不可读的视频

标签 c++ video opencv

我想从 52fps 的 RGB 图像流中生成一个视频文件。我发现 opencv api 使用起来非常方便 (cv::VideoWriter)。问题是我只能用VLC播放制作的avi;它播放视频但大喊:

[0x28307b0] xcb_xv generic error: no available XVideo adaptor

任何其他视频播放器(在同一台计算机上)都无法读取和播放该视频。 录制时一切看起来都正常:我获得了有关输出、帧大小、视频编解码器、fps 等的信息...没有错误。

Output #0, avi, to '01-23-12_15-24-51.avi':
Stream #0.0: Video: flv, yuv420p, 500x242, q=2-31, 7744 kb/s, 90k tbn, 52tbc 

由于 OpenCv 仅支持 avi 作为视频容器,我唯一可以更改的是视频编解码器,我尝试了(FOURCC 代码)FLV1、DIVX、DIV3,但它们都无法正常工作。

我想在不同计算机上使用任何视频播放器播放此视频。我怎样才能让它发挥作用? VideoWriter 是正确的选择吗?

非常欢迎任何建议。

谢谢。

最佳答案

如果您的图像有视频源,最好使用相同的编解码器进行输出:

int videoType = (int)cap.get(CV_CAP_PROP_FORMAT);

VideoWriter vout;
vout.open(videofile + "_out.avi", videoType, 30, imgSize);

或者,您可以尝试更旧、更简单的 FOURCC。或者特定于 Microsoft,如果您只想在 Windows 上运行它。

关于c++ - cv::VideoWriter 产生不可读的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8980205/

相关文章:

python - 用Python处理视频的好资源?

c++ - OpenCV 编译问题

opencv - 计算两个坐标系中给定点之间的变换

C++ OpenCV VideoWriter 帧率同步

apache-flex - 如何批量将swf转成flv

ios - 最新 iOS 更新 (12.2) 后,来自本地存储的视频无法在 WebView (Xamarin.Forms) 中播放

python - Python中_、frame和frame的区别

c++ - QtCreator 编辑器不突出显示 Qt 包含在 CMake 项目中

python - 从 python 调用 C 或 C++ 是如何工作的?

c++ - 转换运算符