On 1/19/18 8:42 AM, Brendan McGrath wrote: > Thanks Karthick - I can confirm that your patch does solve the issue. Thanks for the confirmation. > > However - I noticed your patch does not include HEVC. I believe this format > is now supported in HLS (and that several players including iOS 11 now > provide support). Yes, I just supported H264 since I was working on it. But that patch is modular enough to easily extend CODECS tag support for HEVC. Maybe somebody can add the HEVC support in CODECS tag later :) > > On 19/01/18 00:41, Jeyapal, Karthick wrote: >> On 1/18/18 6:53 PM, Brendan McGrath wrote: >>> I tried your suggestion and it still didn't work. So I took another look at >>> the spec and it looks like what was originally there was correct (as seen >>> in the below example): >>> https://tools.ietf.org/html/rfc8216#section-8.6 >>> >>> In that example - english-audio.m3u8 appears in both a MEDIA and STREAM-INF >>> entry with the STREAM-INF entry including an AUDIO tag that references back >>> to itself. >>> >>> So I believe this patch can be dropped. >>> >>> What I did discover was that it worked when I added a CODECS tag to the >>> STREAM-INF variant of the audio stream. The spec just says: >>> Every EXT-X-STREAM-INF tag SHOULD include a CODECS attribute >>> >>> So I guess this is a bug in iOS. >> I agree. But, there is a patch available >> https://patchwork.ffmpeg.org/patch/7000/ to add CODECS tag. >> You could check if applying that patch solves your issue. >>> On 18/01/18 21:59, Dixit, Vishwanath wrote: >>>> On 1/18/18 2:39 PM, Brendan McGrath wrote: >>>>> When using an 'agroup' within var_stream_map - the audio stream is >>>>> being added to the master playlist file as both an audio rendition >>>>> and an individual stream (with an AUDIO reference back to itself). >>>>> >>>>> This patch ensures an audio rendition does not also appear within >>>>> the stream info list. >>>>> >>>>> What follows is an example of the command to create this issue and >>>>> the contents of the master playlist before and after this patch is >>>>> applied: >>>>> >>>>> ffmpeg -i in.ts -b:a:0 128k -b:v:0 1800k -b:v:1 1024k -map 0:a \ >>>>> -map 0:v -map 0:v -f hls -var_stream_map "a:0,agroup:audio_0 "\ >>>>> "v:0,agroup:audio_0 v:1,agroup:audio_0" -master_pl_name \ >>>>> tv_hls.m3u8 tv_hls_%v.m3u8 >>>>> >>>>> Before: >>>>> #EXTM3U >>>>> #EXT-X-VERSION:3 >>>>> >>>>> #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_audio_0",NAME="audio_0",DEFAULT=YES,URI="tv_hls_0.m3u8" >>>>> #EXT-X-STREAM-INF:BANDWIDTH=140800,AUDIO="group_audio_0" >>>>> tv_hls_0.m3u8 >>>>> >>>>> >>>>> #EXT-X-STREAM-INF:BANDWIDTH=2120800,RESOLUTION=1920x1080,AUDIO="group_audio_0" >>>>> tv_hls_1.m3u8 >>>>> >>>>> >>>>> #EXT-X-STREAM-INF:BANDWIDTH=1267200,RESOLUTION=1920x1080,AUDIO="group_audio_0" >>>>> tv_hls_2.m3u8 >>>>> >>>>> After: >>>>> #EXTM3U >>>>> #EXT-X-VERSION:3 >>>>> >>>>> #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_audio_0",NAME="audio_0",DEFAULT=YES,URI="tv_hls_0.m3u8" >>>>> >>>>> #EXT-X-STREAM-INF:BANDWIDTH=2120800,RESOLUTION=1920x1080,AUDIO="group_audio_0" >>>>> tv_hls_1.m3u8 >>>>> >>>>> >>>>> #EXT-X-STREAM-INF:BANDWIDTH=1267200,RESOLUTION=1920x1080,AUDIO="group_audio_0" >>>>> tv_hls_2.m3u8 >>>>> >>>>> Signed-off-by: Brendan McGrath <red...@redmandi.dyndns.org> >>>>> --- >>>>> >>>> Some use cases may need audio only variant streams. Ex: when bandwidth is >>>> too low. Also, I think the playback issue you are seeing, is because of >>>> AUDIO referencing back to itself, but, not because of audio only variant >>>> stream. So, instead of completely removing the audio only variant streams, >>>> you can just remove the self-referencing attribute (AUDIO=) from the >>>> #EXT-X-STREAM-INF tag’s attribute list, for the audio only variant streams. >>>> #EXTM3U >>>> #EXT-X-VERSION:3 >>>> #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_audio_0",NAME="audio_0",DEFAULT=YES,URI="tv_hls_0.m3u8" >>>> #EXT-X-STREAM-INF:BANDWIDTH=140800 >>>> tv_hls_0.m3u8 >>>> >>>> #EXT-X-STREAM-INF:BANDWIDTH=2120800,RESOLUTION=1920x1080,AUDIO="group_audio_0" >>>> tv_hls_1.m3u8 >>>> >>>> #EXT-X-STREAM-INF:BANDWIDTH=1267200,RESOLUTION=1920x1080,AUDIO="group_audio_0" >>>> tv_hls_2.m3u8 >>>> >>>> >>>>> Pre-patch - the hls stream I was testing would not play on the iOS >>>>> devices I was testing with. >>>>> >>>>> With the patch applied - they now play the stream >>>>> >>>>> libavformat/hlsenc.c | 3 +++ >>>>> 1 file changed, 3 insertions(+) >>>>> >>>>> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c >>>>> index e36120c..a75853b 100644 >>>>> --- a/libavformat/hlsenc.c >>>>> +++ b/libavformat/hlsenc.c >>>>> @@ -1172,6 +1172,9 @@ static int create_master_playlist(AVFormatContext >>>>> *s, >>>>> for (i = 0; i < hls->nb_varstreams; i++) { >>>>> vs = &(hls->var_streams[i]); >>>>> + if (!vs->has_video && !vs->has_subtitle && vs->agroup) >>>>> + continue; >>>>> + >>>>> m3u8_name_size = strlen(vs->m3u8_name) + 1; >>>>> m3u8_rel_name = av_malloc(m3u8_name_size); >>>>> if (!m3u8_rel_name) { >>>> _______________________________________________ >>>> ffmpeg-devel mailing list >>>> ffmpeg-devel@ffmpeg.org >>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>> _______________________________________________ >>> ffmpeg-devel mailing list >>> ffmpeg-devel@ffmpeg.org >>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > >
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel