从 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 信号来正确关闭。
我有一个 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 信号来正确关闭。