一尘不染

在Linux上使用FFmpeg从OpenCV 3编写x264

linux

我在通过FFmpeg(“’X’,‘2’,‘6’,‘4’” FOURCC)用OpenCV
3编写h264视频时遇到问题。到目前为止,我已经看过所有与SO相关的文章,但是没有任何帮助。码:

cv::VideoWriter writer(output_path.string(),    CV_FOURCC('X','2','6','4'), 60, frame_size);

输出:

OpenCV:FFMPEG:标签0x34363258 /’X264’不支持编解码器ID 28和格式’mp4 / MP4(MPEG-4 Part
14)’OpenCV:FFMPEG:后退以使用标签0x00000021 /’!???’

产生的视频非常小(按字节),并且不可读。将four_cc设置为-1会导致FFmpeg产生“未知标签”,我没有得到任何提示来选择编解码器,就像其他人建议的那样。

OpenCV 3文档指出:

带有MP4容器的FFMPEG后端本机使用其他值作为fourcc代码:请参见ObjectType,因此您可能会从OpenCV收到有关fourcc代码转换的警告消息。

有任何建议/解决方法吗?

PS ffmpeg是Ubuntu维护者提供的最新信息,它列出了使用 --enable-libx264

编辑: 我试图使用mkv容器而不是mp4。关于不支持标签的警告消失了,但是仍无法读取生成的视频。


阅读 516

收藏
2020-06-03

共1个答案

一尘不染

该问题与显示的警告无关。我正在尝试编写单通道图像,而VideoWriter则期望使用3通道彩色图像(VideoWriter的构造函数的第5个参数isColor的默认值为“true”)。解决方案是将isColor设置为false。

2020-06-03