Gstreamer-1.0: mux raw video in a mp4 container

為{幸葍}努か 提交于 2019-12-13 07:04:42

问题


I have a raw video that I can play through gstreamer:

gst-launch-1.0 ... autovideoconvert ! autovideosink

I can encode this video:

gst-launch-1.0 ... ! autovideoconvert ! x264enc ! h264parse ! mp4mux ! filesink location=a.mp4

I would like now to put this raw video in a mp4 container "lossless", without any compression. How can I do that?


回答1:


You answered in your question. Don't do compression

gst-launch-1.0 ... ! autovideoconvert ! mp4mux ! filesink location=a.mp4

But you know, without compression this file will be large (GBytes.)




回答2:


I don't think I can use mp4mux but qtmux accept raw-uyvy. The following works:

gst-launch-1.0 ... ! autovideoconvert ! "video/x-raw,format=(string)UYVY" ! qtmux ! filesink location=a.mov



回答3:


Sometimes the source data won't be suitable for re-muxing, but if it is a pipeline such as this should work:

gst-launch-1.0 filesrc location=... ! [DEMUX] ! h264parse ! qtmux ! filesink location=...

h264 data has different "stream formats" and "alignments" that it can be in. The stream formats are avc, avc3, and byte-stream. The possible alignments are au and nal. Different muxers take different combinations of these. h264parse will make that transformation if necessary.

And to re-iterate, sometimes the source data just won't be re-muxable into the desired container. It depends on a lot of factors.



来源:https://stackoverflow.com/questions/39359975/gstreamer-1-0-mux-raw-video-in-a-mp4-container

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!