opencv - 如何在 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 使用不同的解析器和不同的格式,但似乎没有任何效果。我得到一个视频输出,显示“无法播放”错误。我可能错过了一些东西,但我不知道从哪里开始寻找解决方案。任何帮助表示赞赏,谢谢。
解决方案
推荐阅读
- spring - OAuth 用户表自定义
- talend - 正确读取包含文件分隔符的值
- git - Windows WSL2 和 git
- python - 如何在 Python 中使用常规网格的点创建线和曲面
- reactjs - Redux thunk,用 axios 初始化成分,问题
- arrays - 如何在我的 HTML Angular 11 中使用来自 API 调用的嵌套数组 json 响应
- cluster-computing - 用于基于 Windows 的 HPC 和 GPU 的工作负载管理器
- python-3.x - 如何在不使用任何其他数据结构(没有额外的 strs、列表等)或任何字符串方法的情况下过滤字符串?
- flutter - 如何在不同的路线之间导航,而不会使屏幕颤动地显示上一条路线的剩余物
- c - strstr 函数返回的字符串与字符串不同