2016-04-21 522 views
0

GStreamer擴展系列,使用gst-rtsp-server流式傳輸H264文件

請考慮我是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

然後,我流錄製的視頻。 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

我能牛逼o通過設置SDP文件在VLC播放器中查看錄製的視頻,如下所示。

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

但是,我不能暫停或尋求視頻。即使VLC播放器沒有連接到端口5000,以上管道仍在播放視頻。

Btw ..我嘗試使用gst-rtsp-server的test-mp4示例來傳送video.h264,但VLC播放器超時連接。 test-mp4控制檯輸出只顯示單個消息,即「stream ready at rtsp://127.0.0.1:8554/test。

有人能指出我正確的方向來使用GStreamer來流式傳輸錄製的視頻並播放/暫停/尋求VLC播放控制RTSP

感謝, 臂

回答

0

對於test-mp4:?
- 請記住,你必須使用MP4視頻與它
- IIRC,MP4的FLE必須包含視頻和音頻(因爲點eline在test-mp4將同時播放)。
- 運行test-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-server,不能使用gst-launch
+所有付款元素(rtph264pay在這種情況下)必須設置name=pay* *是一個數字(支付0,支付1,支付2 ...)

+0

明德,網絡攝像機,我有工作編碼使用H264encoder視頻。所以我有H264文件,其中包含音頻和視頻。在H264視頻/音頻文件中將test-mp4示例代碼更改爲什麼? – arm

+0

您的IP攝像機可能會對視頻和音頻進行編碼,但是您的第一條記錄文件的命令只是視頻。因此輸出視頻文件不包含音頻。您可以通過運行帶有普通mp4視頻的test-mp4來進行比較,它應該可以正常工作。 –

+0

僅在test-mp4樣本中流式傳輸視頻後才起作用。謝謝Matilda。 – arm

0

這是我如何能夠通過RTSP/RTP流錄製的H264視頻文件,如果你面臨同樣的問題。

修改測試MP4樣品的RTSP管道下水串,如下圖所示: "filesrc location=\"%s\" ! qtdemux " "! h264parse ! rtph264pay pt=96 name=pay0 " ")"

+0

如果源只是一個原始的h264文件,我應該怎麼做?我嘗試使用簡單的命令'test-launch「(filesrc位置= h264.raw!h264parse!rtph264pay pt = 96 name = pay0)'',不幸的是,vlc以'vdpau_avcodec通用錯誤:解碼器配置文件不支持:7' – user693986