使用 gst-rtsp-server 流式传输 H264 文件



GStreamer Extended Family,

把我当成GStreamer的初学者。我正在尝试使用 gst-rtsp 服务器流式传输录制的 H264 文件。所以我可以从 VLC 播放器播放/暂停/查找视频。

这是我到目前为止所做的:

使用以下管道从IP摄像机的RTP H264流录制H264编码视频:

gst-launch-1.0.exe -e -v rtspsrc location=rtsp://192.168.16.155/live.sdp ! rtph264depay ! h264parse ! mp4mux ! filesink location=record/video.h264

然后,我使用以下管道流式传输录制的视频.h264:

gst-launch-1.0.exe -v filesrc location=record/video.h264 ! qtdemux ! h264parse ! rtph264pay config-interval=1 pt=96 ! udpsink host=127.0.0.1 port=5000

我可以通过设置SDP文件在VLC播放器中查看录制的视频,如下所示。

v=0 m=video 5000 RTP/AVP 96 c=IN IP4 127.0.0.1 a=rtpmap:96 H264/90000

但是,我无法暂停或寻找视频。即使VLC播放器未连接到端口5000,上述管道也会继续播放视频。

顺便说一句。我尝试使用 gst-rtsp-server 的 test-mp4 示例来流式传输 video.h264,但 VLC 播放器使连接超时。test-mp4 控制台输出仅显示单个消息,即"流就绪 rtsp://127.0.0.1:8554/test。

有人可以指出我正确的方向,使用 GStreamer 流式传输录制的视频并通过 RTSP 从 VLC 播放器播放/暂停/寻求控制吗?

谢谢手臂

对于test-mp4
- 请记住,您必须使用mp4视频。
- IIRC,mp4 fle 必须同时包含视频和音频(因为 test-mp4 中的管道将同时播放两者)。
- 运行测试-mp4后,检查服务器的IP(运行test-mp4的机器)。在这种情况下,您将环回流式传输到同一台 PC,因此您可以使用环回 IP 127.0.0.1
- 然后,在客户端,打开VLC并选择打开网络流,并将rtsp URL输入为: rtsp://<Server IP> :8554/测试
例如,如果服务器 IP 为 192.168.1.1,则 URL rtsp://192.168.1.1:8554/test

对于 rtsp 服务器:
- 只需遵循测试-mp4
中的示例- 但请记住几点:
+ 您必须编写一个应用程序才能使用 rtsp 服务器,不能与 gst 启动
一起使用 + 所有支付元素(在本例中为 rtph264pay)必须设置为 name=pay* * 是一个数字(pay0、pay1、pay2...)

如果您遇到同样的问题,以下是我如何能够通过 RTSP/RTP 流式传输录制的 H264 视频文件。

修改 test-mp4 示例的 rtsp 管道启动字符串,如下所示: "filesrc location="%s" ! qtdemux " "! h264parse ! rtph264pay pt=96 name=pay0 " ")"

最新更新