我是 gstreamer 新手。我正在尝试编写一个命令来显示源(例如网络摄像头)中正在运行的视频并将视频录制到 mp4。
我单独尝试过
gst-launch-1.0 v4l2src device=/dev/video0 ! decodebin ! videoconvert ! autovideosink
显示视频,并且
gst-launch-1.0 -e v4l2src device=/dev/video0 ! decodebin ! videoconvert ! x264enc ! mp4mux ! filesink location=output.mp4
录制视频。两个命令的行为都符合预期。然而,当我尝试使用
将两者结合起来时gst-launch-1.0 -e v4l2src device=/dev/video0 ! decodebin ! videoconvert ! tee name=t t. ! autovideosink t. ! x264enc ! mp4mux ! filesink location=output.mp4
它不起作用。显示冻结并且生成的 mp4 没有任何值(0 字节)。我尝试在每个分支的
queue
之后添加 tee
,例如
gst-launch-1.0 -e v4l2src device=/dev/video0 ! decodebin ! videoconvert ! tee name=t t. ! queue ! autovideosink t. ! queue ! x264enc ! mp4mux ! filesink location=output.mp4
但问题仍然存在。
我该如何解决这个问题?谢谢你
如果 HEVC 适合您,您可以使用以下管道
gst-launch-1.0 videotestsrc ! tee name=t ! queue ! autovideosink t. ! queue ! x265enc ! filesink location="output.mp4"
我使用 videotestsrc 因为我没有网络摄像头。