簡體   English   中英

單個RTMP可通過免費媒體服務器和控制面板進行自適應流傳輸

[英]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的試用期已經結束!

請在這件事上給予我幫助!

您所要求的一切都可以使用nginxnginx-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM