保存H264编码的流而无需重新编码

时间:2017-03-21 15:02:37

标签: gstreamer

我有一个gstreamer管道使用:

v4l2src ! x264enc ! rtph264pay pt=96 ! udpsink host=ip port=8554

接收此流的此管道:

                                                                /   queue !     avdec_h264 ! appsink
udpsrc ! capsfilter ! rtpjitterbuffer ! rtph264depay ! tee ! 
                                                                \   queue ! h264parse ! mp4mux ! filesink

没有发球台的简化接收器管道是:

gst-launch-1.0 udpsrc port=8080 caps="lots-of-caps" ! rtpjitterbuffer ! rtph264depay ! h264parse ! mp4mux ! filesink location=/home/rish/Desktop/recorded.264 -e 

问题: 有没有办法保存从udpsrc收到的H264编码流而不必重新编码?如何正确关闭filesink?

到目前为止我已尝试过:来自this线程的讨论建议我上面尝试过的管道,但文件仍然是损坏的。 (未正确关闭)。

This问题提出了类似的问题。但是我不想解码和重新编码。线程中的另一个答案建议使用matroskamux元素而不是mp4mux。这有效,但我更喜欢使用mp4mux(没有特别的原因,但我想知道为什么matroskamux工作而mp4mux没有)。

1 个答案:

答案 0 :(得分:0)

您的管道已经在没有重新编码的情况下进行多路复用,您的管道上没有编码器。 h264parse只是一个解析器。

您已经在这里获得了关于如何关闭流的答案:Sending EoS to filesink while removing branch from tee