I have an iOS app which has been in the AppStore for 3+ years. We've been using the same video production pipline the whole time,
Since we upgraded to the most recent Apple streaming media tools, our HLS streams no longer "up-shift" to the higher bandwidth streams.
Recently, our video production machine was upgraded to OSx Sierra. When we went to install the Apple streamingtools with the media segmenter and the variant playlist generator, I found the installer I had was out of date, or rather, would not work. I downloaded the most recent version from Apple (streamingtools_beta194_signed.dmg) and ran the installer, set up everything else (we use HandBrake CLI for transcoding).
But, now I see that something has changed in the new Apple toolset. The Variant (master) Playlist creator is doing something different, the end result is different and when we play the master playlist (m3u8) our streams no longer adapt - or up-shift. Videos which were produced before the upgrade continue to play correctly. Here is what an older playlist looks like, created before we updated our tools:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=559334,CODECS="mp4a.40.2, avc1.4d4015"
500k/MT2_0400_Final_500k.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=240280,CODECS="mp4a.40.2, avc1.4d400b"
150k/MT2_0400_Final_150k.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=354685,CODECS="mp4a.40.2, avc1.4d4015"
300k/MT2_0400_Final_300k.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=898064,CODECS="mp4a.40.2, avc1.4d4015"
800k/MT2_0400_Final_800k.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1321088,CODECS="mp4a.40.2, avc1.4d401f"
1200k/MT2_0400_Final_1200k.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2620515,CODECS="mp4a.40.2, avc1.4d401f"
2400k/MT2_0400_Final_2400k.m3u8
And this is the newer output from the new 'variantplaylistcreator' produced this week - it has an extra line per-video (the EXT-X-MEDIA tag) - I've read the docs on DEFAULT=YES And AUTOSELECT=YES but I can't find out what FORCED=YES does - either way, I've fiddled with this and I can't seem to figure out A) which parts of this are breaking my HLS streams - WHY do they no longer up-shift?
To be specific - what is this "it won't up-shift" - I mean the stream intiially loads the 500kbps video, because it is the first in the playlist (as you can see in both examples). After that, client/player negotiation should cause the server to deliver the higher-bandwidth streams (if possible due to network conditions of course) - but it doesn't, it just sticks on the 500kbps video no matter what.
Same exact video segments, but with the playlist above (assuming the right file names) - same video the above playlist, and the stream up-shifts within 5 seconds after start. You can even see it happen in QuickTime if you watch the Video Inspector popup window, you can see the dimentions change from the 512x288 of the 500kbps stream, to the 1024x576 of the 1200/2400kbps streams (I cant tell which - doesn't matter).
And more important, what parameters should I be passing not/passing to the variantplaylistcreator to emit the correct m3u8 which actually works?
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio1",NAME="audio1",DEFAULT=YES,AUTOSELECT=YES,FORCED=YES,CHANNELS="1"
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=519182,BANDWIDTH=561809,CODECS="mp4a.40.2, avc1.4d4015",RESOLUTION=512x288,FRAME-RATE=23.976,CLOSED-CAPTIONS=NONE,AUDIO="audio1"
500k/EL2_0100_Final_500k.m3u8
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio2",NAME="audio2",DEFAULT=YES,AUTOSELECT=YES,FORCED=YES,CHANNELS="1"
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=160810,BANDWIDTH=173261,CODECS="mp4a.40.2, avc1.4d400b",RESOLUTION=256x144,FRAME-RATE=15.000,CLOSED-CAPTIONS=NONE,AUDIO="audio2"
150k/EL2_0100_Final_150k.m3u8
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio3",NAME="audio3",DEFAULT=YES,AUTOSELECT=YES,FORCED=YES,CHANNELS="1"
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=311120,BANDWIDTH=334791,CODECS="mp4a.40.2, avc1.4d4015",RESOLUTION=512x288,FRAME-RATE=15.000,CLOSED-CAPTIONS=NONE,AUDIO="audio3"
300k/EL2_0100_Final_300k.m3u8
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio4",NAME="audio4",DEFAULT=YES,AUTOSELECT=YES,FORCED=YES,CHANNELS="1"
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=821984,BANDWIDTH=899073,CODECS="mp4a.40.2, avc1.4d4015",RESOLUTION=512x288,FRAME-RATE=23.976,CLOSED-CAPTIONS=NONE,AUDIO="audio4"
800k/EL2_0100_Final_800k.m3u8
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio5",NAME="audio5",DEFAULT=YES,AUTOSELECT=YES,FORCED=YES,CHANNELS="1"
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1228197,BANDWIDTH=1344825,CODECS="mp4a.40.2, avc1.4d401f",RESOLUTION=1024x576,FRAME-RATE=23.976,CLOSED-CAPTIONS=NONE,AUDIO="audio5"
1200k/EL2_0100_Final_1200k.m3u8
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio6",NAME="audio6",DEFAULT=YES,AUTOSELECT=YES,FORCED=YES,CHANNELS="1"
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2444925,BANDWIDTH=2687528,CODECS="mp4a.40.2, avc1.4d401f",RESOLUTION=1024x576,FRAME-RATE=23.976,CLOSED-CAPTIONS=NONE,AUDIO="audio6"
2400k/EL2_0100_Final_2400k.m3u8