Gstreamer-1.0:在 mp4 容器中复用原始视频

Gstreamer-1.0: mux raw video in a mp4 container

我有一个可以通过 gstreamer 播放的原始视频:

gst-launch-1.0 ... autovideoconvert ! autovideosink

我可以编码这个视频:

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

我现在想把这个原始视频放在 mp4 容器中 "lossless",不进行任何压缩。我该怎么做?

您已回答问题。不做压缩

gst-launch-1.0 ...!自动视频转换! mp4mux!文件接收器位置=a.mp4

但是你知道,如果不压缩,这个文件会很大(GBytes。)

我认为我不能使用 mp4mux 但 qtmux 接受 raw-uyvy。以下作品:

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

有时源数据不适合重新混合,但如果它是这样的管道应该可以:

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

h264 数据有不同的 "stream formats" 和 "alignments" 它可以在其中。流格式是 avc、avc3 和字节流。可能的比对是 au 和 nal。不同的混合器采用这些的不同组合。 h264parse 将在必要时进行转换。

重申一下,有时源数据无法重新混合到所需的容器中。这取决于很多因素。