如何使用gstreamer从实时视频方法tcpclientsrc application/x-rtp-stream编码JPEG视频流录制到文件?

问题描述 投票:0回答:1

我使用 Gstreamer 处理实时摄像头视频流,通过 tcpserversink、jpegenc、rtpjpegpay 和 rtpstreampay 发送。

我在开放广播工作室使用 Gstreamer 接收此工作: tcpclientsrc host=ipaddress port=port !应用程序/x-rtp-stream,媒体=(字符串)视频,时钟速率=(int)90000,编码名称= JPEG! rtpstreamdepay! rtpjpeg支付! jpegdec !视频转换!解码器!队列 !视频。

如何使用命令行 gstreamer 从实时摄像机源(类似于上面的 OBS)获取它并记录为 matroska mkv 和/或 mpeg mp4 文件,或者可以考虑使用 Motion mjpeg?

Gstreamer 命令行: gst-launch-1.0 -e tcpclientsrc 主机=ip地址 端口=端口!应用程序/x-rtp-stream,媒体=(字符串)视频,帧速率= 30/1,时钟速率=(int)90000,编码名称= JPEG,时钟速率=(int)90000! rtpstreamdepay! rtpjpeg支付! jpeg解析! matroskamux 可流式传输=1!文件接收器位置=C:/video.mkv

它说 Pipeline is PREROLLING,PREROLLED,并将 pipeline 设置为 PLAYING with New Clock。

虽然只录制第一帧,但时钟卡在 0:00:00.0/99:99:99,因此,打开 mkv 文件,VLC 播放器仅显示第一帧。

我尝试了很多不同的变体,在线搜索很有挑战性,尝试过 videoconvert、decodebin、jpegdec、mp4mux、mpegtsmux、matroskamux、queue 等。

感谢您的帮助。

stream gstreamer mp4 tcpclient matroska
1个回答
0
投票

您可能需要在 rtpjitterbuffer

rtpstreamdepay 之间添加
rtpjpegdepay

gst-launch-1.0 -e tcpclientsrc ! application/x-rtp-stream,encoding-name=JPEG ! rtpstreamdepay ! rtpjitterbuffer ! rtpjpegdepay ! jpegparse ! matroskamux ! filesink location=test_mjpg.mkv

请注意,

rtpjitterbuffer
有一个
latency
属性,默认值为2000毫秒,您可以稍后根据您的情况进行调整。

© www.soinside.com 2019 - 2024. All rights reserved.