> On 19 Jan 2018, at 11:18, Jeyapal, Karthick <kjeya...@akamai.com> wrote:
> 
> 
> 
> 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 :)
Can you add it into the patch, so that will be perfect :D
>> 
>> 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



_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to