首页 > 解决方案 > 如何在 gstreamer 1.0 中使用 fMP4、MP4V 等 FOURCC 编解码器编写视频?

问题描述

所以我目前正在使用 gstreamer-python,我需要制作一个接收字节数据并写入视频的管道。我可以通过以下管道完成它:

appsrc name=source is-live=true block=true format=GST_FORMAT_TIME
caps=video/x-raw,format=RGB,width=640,height=480,framerate=10/1
!视频转换!视频/x-raw,格式=I420
!x264enc speed-preset=ultrafast tune=zerolatency byte-stream=true
!文件接收器位置=brrr/brrr.mp4

问题是我只能将缓冲区编码为三字符编解码器,如 mpeg-4、matroska,但我需要将其编码为 FMP4、MP4V。我找不到任何关于如何写入 FOURCC 容器的信息。但是,我能够找到有关如何在 gstreamer-0.10 中完成此操作的信息,特别是通过对原始视频使用以下内容:

视频/x-raw-yuv,format='(fourcc)'MP4V

使用它在 gstreamer-1.0 中给我一个错误,说它已被弃用。我可以像这样使用 OpenCV 做我想做的事情:

fourcc = cv2.VideoWriter_fourcc(*'FMP4')
writer = cv2.VideoWriter(output_video_save_name,fourcc, framerate, (width, height), True)

我基本上想在 gstreamer 中模拟它,但我无法将它编码到fourcc容器中。我对 gstreamer 很陌生,我浏览了 gstreamer-1.0 文档,找不到任何东西。我尝试对视频/x-raw 使用不同的解析器和不同的格式,但似乎没有任何效果。我得到一个视频输出,显示“无法播放”错误。我可能错过了一些东西,但我不知道从哪里开始寻找解决方案。任何帮助表示赞赏,谢谢。

标签: opencvgstreamercodec

解决方案


推荐阅读