从 gstreamer 录制相机流

record camera stream from gstreamer

我有一个 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

它没有给出任何错误,但似乎只是没有将有效流写入我的文件接收器。

如何停止直播?相机会正确注入 EOS 信号吗?如果不是,您只需按 ctrl-c 停止操作,.mp4 文件将丢失重要的 headers,这是正常播放所必需的。

-e 添加到您的命令行。在这种情况下,当您按下 ctrl-c 时,管道不仅会停止,还会通过通过管道发送 EOS 信号来正确关闭。