Show pageOld revisionsBacklinksODT exportBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Live HLS Dynamic Bitrate Streaming ====== Beim nginx wird im rtmp-Kontext eine Applikation //src// erstellt, die gleich zu [[events:30c3:cdn:live-rtmp-dynamic-bitrate]] ist. Weiteres dort. In der Applikation //stream// wird den verschiedenen Varianten die Bandbreite mitgeteilt. Diese berechnet sich aus der Video- + Audio-Bandbreite. Dadurch werden ''.m3u8''-Playlists pro Variante erstellt, die in ''/tmp/hls/$name_variant/index.m3u8'' abgelegt werden. Ebenso wird eine “globale” ''.m3u8''-Playlist für den Stream an sich in ''/tmp/hls/$name.m3u8'' erstellt, die auf die Varianten-Playlists verweist. <code> application src { live on; sync 50ms; pull rtmp://cp76072.live.edgefcs.net/live/EDU-HQ-Flash@42809 app=live playPath=EDU-HQ-Flash@42809 name=nasa; pull rtmp://aljazeeraflashlivefs.fplive.net:1935/aljazeeraflashlive-live/aljazeera_eng_high app=aljazeeraflashlive-live playPath=aljazeera_eng_high name=aljazeera static; exec /usr/bin/ffmpeg -i rtmp://localhost:1935/src/${name} -c:a libfdk_aac -b:a 16k -c:v libx264 -b:v 128K -f flv -s 160x90 rtmp://localhost/stream/$name_low -c:a libfdk_aac -b:a 32k -c:v libx264 -b:v 256K -f flv -s 320x180 rtmp://localhost/stream/$name_mid -c:a libfdk_aac -b:a 64k -c:v libx264 -b:v 512K -f flv -s 640x360 rtmp://localhost/stream/$name_hi -c:a copy -b:a copy -c:v copy -b:v copy -f flv rtmp://localhost/stream/$name_full; } application stream { live on; hls on; hls_nested on; hls_path /tmp/hls; hls_fragment 5s; hls_variant _low BANDWIDTH=144000; hls_variant _mid BANDWIDTH=288000; hls_variant _hi BANDWIDTH=576000; hls_variant _full BANDWIDTH=864000; } </code> <file /tmp/hls/aljazeera.m3u8> #EXTM3U #EXT-X-VERSION:3 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=144000 aljazeera_low/index.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=288000 aljazeera_mid/index.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=576000 aljazeera_hi/index.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=864000 aljazeera_full/index.m3u8 </file> <file /tmp/hls/aljazeera_mid/index.m3u8> #EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:575 #EXT-X-TARGETDURATION:7 #EXTINF:5.760, 575.ts #EXTINF:6.560, 576.ts #EXTINF:5.320, 577.ts #EXTINF:5.560, 578.ts #EXTINF:6.800, 579.ts #EXTINF:5.080, 580.ts </file> Im http-Kontext des nginx wird die Location ''/hls'' benötigt, die auf ''/tmp/hls'' zeigt. Dieses sollte als tmpfs erzeugt sein. Der Stream kann nun über http://stream.konvergenzfehler.de/hls/aljazeera.m3u8 abgerufen werden. Am besten ist es, diesen mit einem HLS-fähigen Endgerät (iPhone, iPad) anzuschauen, da dort erkennbar ist, wie erst die schlechteste Qualität abgerufen und dann hoch skaliert wird. events/30c3/cdn/live-hls-dynamic-bitrate.txt Last modified: 2016/03/22 10:40by v0tti