使用 gst-rtsp-server 流式传输 H264 文件
Posted
技术标签:
【中文标题】使用 gst-rtsp-server 流式传输 H264 文件【英文标题】:Streaming H264 file using gst-rtsp-server 【发布时间】:2016-08-14 01:56:10 【问题描述】:GStreamer 大家庭,
假设我是 GStreamer 的初学者。我正在尝试使用 gst-rtsp-server 流式传输记录的 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
然后,我使用以下管道流式传输录制的 video.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 播放器播放/暂停/搜索控制?
谢谢, 手臂
【问题讨论】:
【参考方案1】:对于test-mp4
:
- 请记住,您必须使用 mp4 视频。
- IIRC,mp4 文件必须包含视频和音频(因为test-mp4
中的管道将同时播放)。
- 运行 test-mp4 后,检查服务器的 IP(运行 test-mp4 的机器)。在这种情况下,您将环回流式传输到同一台 PC,因此您可以使用环回 IP 127.0.0.1
- 然后,在客户端,打开 VLC 并选择 Open Network Stream,然后输入 rtsp URL:rtsp://<Server IP>
:8554/test
例如,如果服务器 IP 为 192.168.1.1,则 URL 为rtsp://192.168.1.1:8554/test
对于 rtsp 服务器:
- 只需按照 test-mp4 中的示例
- 但请记住以下几点:
+ 您必须编写应用程序才能使用 rtsp-server,不能与 gst-launch 一起使用
+ 所有支付元素(本例中为 rtph264pay)必须设置为 name=pay*
,其中 * 是一个数字(pay0、pay1、pay2...)
【讨论】:
Matilda,我正在使用的 IP 摄像机使用 H264encoder 对视频进行编码。所以我有 H264 文件,其中包含音频和视频。将 test-mp4 示例代码更改为 H264 视频/音频文件中的哪些内容? 您的 IP 摄像机可以同时编码视频和音频,但您录制文件的第一个命令只是视频。因此输出视频文件不包含音频。您可以通过运行 test-mp4 与普通 mp4 视频进行比较来进行检查,它应该可以正常工作。 仅在 test-mp4 样本中流式传输视频后工作。谢谢玛蒂尔达。【参考方案2】:如果您遇到同样的问题,我可以通过 RTSP/RTP 流式传输录制的 H264 视频文件。
修改test-mp4示例的rtsp管道启动字符串如下图:
"filesrc location=\"%s\" ! qtdemux "
"! h264parse ! rtph264pay pt=96 name=pay0 "
")"
【讨论】:
如果源只是一个原始的 h264 文件,我该怎么办?我尝试使用简单的命令test-launch "( filesrc location=h264.raw ! h264parse ! rtph264pay pt=96 name=pay0 )"
,不幸的是,vlc 用vdpau_avcodec generic error: decoder profile not supported: 7
回复我以上是关于使用 gst-rtsp-server 流式传输 H264 文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 AVFoundation 在 iOS 上播放套接字流式传输的 h.264 电影
在 Internet Explorer 9 中使用 HTML5 实时流式传输 h.264
通过 gstreamer udpsink 流式传输 h.264 时如何解决图像问题
如何使用 NVidia NVEnc 硬件编码器通过 UDP 流式传输 H.264 视频?