Rtsp to Rtmp流媒體轉發

RTMP是一種設計用來進行實時數據通信的網絡協議,主要用來在Flash/AIR平臺和支持RTMP協議的流媒體/交互服務器之間進行音視頻和數據通信。支持該協議的軟件包括Adobe Media ServerUltrant Media Serverred5nginx

HTTP Live Streaming(HLS)是蘋果公司(Apple Inc.)實現的基於HTTP的流媒體傳輸協議,可實現流媒體的直播和點播,相對於常見的流媒體直播協議,例如RTMP協議、RTSP協議、MMS協議 等,HLS直播最大的不同在於,直播客戶端獲取到的,並不是一個完整的數據流。HLS協議在服務器端將直播數據流存儲爲連續的、很短時長的媒體文件 (MPEG-TS格式),而客戶端則不斷的下載並播放這些小文件,因爲服務器端總是會將最新的直播數據生成新的小文件,這樣客戶端只要不停的按順序播放從服務器獲取到的文件,就實現了直播。由此可見,基本上可以認爲,HLS是以點播的技術方式來實現直播。由於數據通過HTTP協議傳輸,所以完全不用考慮防火牆或者代理的問題,而且分段文件的時長很短,客戶端可以很快的選擇和切換碼率,以適應不同帶寬條件下的播放。不過HLS的這種技術特點,決定了它的延遲 一般總是會高於普通的流媒體直播協議。

nginx配合ffmpeg做流媒體服務器的原理是: nginx通過rtmp模塊提供rtmp服務, ffmpeg推送一個rtmp流到nginx, 然後客戶端通過訪問nginx來收看實時視頻流. HLS也是差不多的原理,只是最終客戶端是通過HTTP協議來訪問的,但是ffmpeg推送流仍然是rtmp的。

1、推送視頻文件到rtmp上

ffmpeg -re -i "D:\videos\test1.mp4"-vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv-s 1280x720 -q 10 rtmp://127.0.0.1:1935/live/test1

2、推送到視頻文件到hls上

ffmpeg -re -i "D:\videos\test1.mp4"-vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv-s 1280x720 -q 10 rtmp://127.0.0.1:1935/hls/test2

3、執行ffmpeg命令進行rtsp協議轉成rtmp:

ffmpeg -i"rtsp://admin:[email protected]/h264/ch1/main/av_stream" -f flv -r25 -s 640x480 -an "rtmp://127.0.0.1:1935/live/test3"

-i:後面是我所需要的攝像頭協議

-f flv:後面是我要轉到nginxrtmp服務器上

-s:視頻解析度:(分配率)也就是能調視屏的清晰度,如果在本機上測試建議640*480就好,改變視屏流的解析式cpu會消耗很大

(rtmp服務地址:rtmp://127.0.0.1:1935/myapp/test2)

127.0.0.1nginx啓動的機器ip

1935:端口號(之前在nginx.conf裏配置的)

live:是application 後面的名稱

test3:可以隨便起,記得到時候訪問rtmp時要一致




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章