[英]Single RTMP to adaptative streaming with a free media server and control panel
這就是我現在正在做的事情:
我正在發送帶有teradek vidiu的電視直播頻道,該視頻通過RTMP將視頻通過RTMP發送到具有靈活流媒體服務器的AWS EC2實例,該服務器在幾個月前使用wmspanel(在試用期內)進行了配置。 靈活的服務器對rtmp進行轉碼,並給我一個HLS(m3u8),我可以使用peer5(jwplayer)在網頁中播放它。 這樣做的問題是實況視頻僅以HD格式存在,而連接速度較慢的客戶端看不到視頻,或者有時結結巴巴。
我想要的是:
我希望所有人都能連接到自適應流,低速觀看較低比特率的視頻,而高速觀看高清視頻。 我知道我可以使用wowza等服務器進行此操作,問題是價格,我想要一台帶免費控制面板的免費服務器。 Nimble服務器是免費的,但wmspanel不是免費的,現在我無法更改或做任何靈活的事情,因為wmspanel的試用期已經結束!
請在這件事上給予我幫助!
您所要求的一切都可以使用nginx , nginx-rtmp模塊和ffmpeg (所有免費軟件)完成。 我有一個類似於您的設置(BlackMagic H264 Pro代替了Teradek,但其他方面都相同),它可以傳輸幾個電視頻道。
唯一的問題是您需要使用rtmp模塊自己編譯nginx,如果需要某種控制面板,則必須自己編寫。
我的設置如下:
1.-連接到實時切換器的本地服務器上的BM H264 Pro將高清流發送到使用Fedora 23的EC2實例。
2.- Nginx-rtmp接受輸入並調用ffmpeg來創建六個不同的HLS實時流(180p,240p,360p,480p,720p,1080p),然后通過CloudFront CDN提供這些流以確保速度。
它運行得非常好,而且我沒有任何問題,CloudFront直接從EC2實例中獲取數據流,並且速度驚人。 您確實需要一個功能強大的實例(我使用m4.4xlarge)進行並行編碼。
使用PHP(或其他任何語言,實際上我也喜歡PHP),您可以擁有控制面板和其他功能。 例如,我使用此設置跟蹤所有視圖,暫停,執行一些geoIP和其他指標。
-------- 8月4日更新--------
這是我的nginx的conf文件:
application live-video {
access_log /webdata/logs/access/publish.log;
live on;
record all;
wait_key on;
record_path /webdata/batch/video;
record_unique on;
drop_idle_publisher 2s;
interleave on;
allow play all;
allow publish all;
notify_method get;
exec_push /usr/bin/ffmpeg -y -re -i rtmp://localhost:1935/live-video/$name -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -r:v 30 -s 320x180 -b:v 256k -c:v libx264 -preset ultrafast -pix_fmt yuv420p -profile:v baseline -level 3.0 -c:a libfaac -ac 1 -ar 48000 -b:a 96k -f flv rtmp://localhost:1935/stream-video/240p -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -r:v 30 -s 640x360 -b:v 512k -c:v libx264 -preset ultrafast -pix_fmt yuv420p -profile:v baseline -level 3.0 -c:a libfaac -ac 1 -ar 48000 -b:a 96k -f flv rtmp://localhost:1935/stream-video/360p -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -r:v 30 -s 854x480 -b:v 1024k -c:v libx264 -preset ultrafast -pix_fmt yuv420p -profile:v baseline -level 3.0 -c:a libfaac -ac 1 -ar 48000 -b:a 96k -f flv rtmp://localhost:1935/stream-video/480p -c:a libfaac -ac 1 -ar 48000 -b:a 64k -f flv rtmp://localhost:1935/stream-video/aacp;
access_log off;
}
application stream-video {
live on;
access_log /webdata/logs/access/stream-video.log;
hls on;
hls_fragment 10s;
hls_playlist_length 5m;
hls_path /webdata/html/live/video;
}
實時流發布到rtmp:// server:1935 / live-video / stream?token = TOK; 這會調用ffmpeg進行即時轉碼為四種品質,並將其發布到“流視頻”應用中。 因此,您發布到“實時視頻”,而用戶觀看“流視頻”。
注意,Nimble Streamer現在具有Transcoder附加組件來完成所描述的任務: https : //wmspanel.com/transcoder
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.