问题描述
我想用 gstreamer 创建一个 mp4 文件的 RTP 流。 我在 debian bullseye 上使用 gstreamer 1.18.4。
为了创建一个 mp4 文件,我使用以下命令从我的网络摄像头录制了一个 RTSP 流:
gst-launch-1.0 -e rtspsrc location="rtsp://192.168.111.146/axis-media/media.amp" port-range=28000-38000 buffer-mode=0 latency=80 ! rtph264depay ! h264parse ! mp4mux ! filesink location=filename.mp4
录制文件 filename.mp4
后,我尝试使用 RTP 流式传输它:
gst-launch-1.0 filesrc location=filename.mp4 ! qtdemux ! h264parse ! avdec_h264 ! x264enc ! h264parse ! rtph264pay ! udpsink port=50000 host=127.0.0.1
并且可以在同一台机器上使用以下命令开始播放流:
gst-launch-1.0 udpsrc address=127.0.0.1 port=50000 auto-multicast=true ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! avdec_h264 ! autovideosink
一切都按预期进行!
但是由于我不想对文件进行转码,所以我只想跳过解码和编码部分。因此,我创建了以下管道:
gst-launch-1.0 filesrc location=filename.mp4 ! qtdemux ! h264parse ! rtph264pay ! udpsink port=50000 host=127.0.0.1
和
gst-launch-1.0 filesrc location=filename.mp4 ! qtdemux ! rtph264pay ! udpsink port=50000 host=127.0.0.1
但是,如果我在两个管道上重试播放管道(带有 udpsrc
的管道),则不会显示流。
有趣的是,nload
显示了 lo
上的网络流量。
流媒体管道有什么问题?
我错过了中间的一些神奇插件吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)