我有一个gstreamer管道,可以很好地工作并拍摄相机流,将其编码为H.264视频,将其保存到文件中并按如下方式显示在屏幕上:
gst-launch-1.0 -v autovideosrc ! tee name = t ! queue ! omxh264enc !
'video/x-h264, stream-format=(string)byte-stream' ! h264parse ! qtmux !
filesink location=test.mp4 t. ! queue ! videoscale ! video/x-raw,
width=480,height=270 ! xvimagesink -e sync=false
现在,我正在尝试做一些简单的事情,只是将流记录到文件中(不在屏幕上显示),这似乎不起作用!它写一个文件但无法播放。到目前为止我尝试的是:
gst-launch-1.0 -v autovideosrc ! queue ! omxh264enc ! 'video/x-h264,
stream-format=(string)byte-stream' ! h264parse ! qtmux ! filesink
location=test.mp4 sync=false
我也可以删除队列元素,但结果相同:
gst-launch-1.0 -v autovideosrc ! omxh264enc ! 'video/x-h264,
stream-format=(string)byte-stream' ! h264parse ! qtmux ! filesink
location=test.mp4 sync=false
它没有给出任何错误,但似乎没有写一个有效的流到我的filesink,似乎。
答案 0 :(得分:2)
你如何阻止流?相机是否会正确注入EOS信号?如果没有,您只需按ctrl-c
即可停止操作.mp4文件将缺少正确播放所需的重要标题。
将-e
添加到命令行。在这种情况下,当您按ctrl-c
时,管道不会停止,而是通过管道发送EOS信号正确关闭。