您所要求的一切都可以使用nginx,nginx-rtmp模塊和ffmpeg所有免費軟件完成。我有一個類似於你的設置(BlackMagic H264 Pro,而不是Teradek,但其他方面相同)傳輸幾個電視頻道。
唯一的問題是你需要用rtmp模塊自己編譯nginx,如果你需要某種控制面板,你必須自己編寫。
我的設置是這樣的:
1.- BM H264連接到直播切換本地服務器上臨發送HD流EC2實例在Fedora 23
2:Nginx的,RTMP接受輸入並調用ffmpeg創建六個不同的HLS實時流(180p,240p,360p,480p,720p,1080p),然後通過CloudFront CDN進行服務以確保速度。
它工作得很好,我沒有任何問題,CloudFront直接從EC2實例中獲取流,速度非常驚人。你需要一個相當強大的實例(我使用m4.4xlarge)來進行並行編碼。使用PHP(或其他任何語言,其實我只是喜歡PHP),你可以有一個控制面板和其他細節。例如,我跟蹤所有視圖,暫停,使用此設置執行一些geoIP和其他指標。
--------更新08月04日--------
下面是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:/ /服務器:1935 /直播,視頻/流令牌= TOK;?這會調用ffmpeg進行即時轉碼,以達到四種品質,並將其發佈到「流視頻」應用程序。所以,你發佈到「實時視頻」,你的用戶觀看「流視頻」。
嗨hdezela。感謝您的回答。但是:1)我是否必須編譯自己的nginx?是否有我可以使用的預製包? 2)你如何連接到雲端?因爲我用s3試過,但是我不能播放直播節目,只能保存在s3中的文件。謝謝 –
Hey Amin; 1)我還沒有看到一個預製的nginx-rtmp二進制文件,儘管你自己編譯它很簡單(基本上是configure/make/make install),不過你必須確保擁有所有的先決條件。 2)您可以使用自定義來源將EC2實例連接到CloudFront,只需使用服務器的常規URL作爲原點(http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DownloadDistS3AndCustomOrigins.html) 。 – hdezela
Hdzela對於延遲抱歉。我編譯了nginx,現在我有1個流。但我無法創建其他低質量的流。你能分享你的nginx.conf嗎?謝謝! –