[FFmpeg-trac] #6915(avformat:new): DASH audio segments duration doesn't match exactly with video segments duration.

FFmpeg trac at avcodec.org
Thu Dec 21 16:41:42 EET 2017


#6915: DASH audio segments duration doesn't match exactly with video segments
duration.
------------------------------------+------------------------------------
             Reporter:  beloko      |                    Owner:
                 Type:  defect      |                   Status:  new
             Priority:  normal      |                Component:  avformat
              Version:  git-master  |               Resolution:
             Keywords:              |               Blocked By:
             Blocking:              |  Reproduced by developer:  0
Analyzed by developer:  0           |
------------------------------------+------------------------------------

Comment (by j_karthic):

 Replying to [comment:19 stevenliu]:
 > Replying to [comment:18 stevenliu]:
 > > Replying to [comment:17 j_karthic]:
 > > > Replying to [comment:16 stevenliu]:
 > > > > Replying to [comment:15 j_karthic]:
 > > > > > Replying to [comment:14 stevenliu]:
 > > > > > > Replying to [comment:13 j_karthic]:
 > > > > > > > Replying to [comment:12 stevenliu]:
 > > > > > > > > Replying to [comment:11 j_karthic]:
 > > > > > > > > > Replying to [comment:10 stevenliu]:
 > > > > > > > > > > Replying to [comment:9 j_karthic]:
 > > > > > > > > > > > Replying to [comment:8 stevenliu]:
 > > > > > > > > > > > > Replying to [comment:7 j_karthic]:
 > > > > > > > > > > > > > Well, if we round the target duration to
 '''nearest integer''' as per the spec, part of the problem is resolved.
 Right now we are '''ceiling to the upper integer''' which is not according
 to HLS specifications.
 > > > > > > > > > > > > >
 > > > > > > > > > > > > > {{{
 > > > > > > > > > > > > > 4.3.3.1.  EXT-X-TARGETDURATION
 > > > > > > > > > > > > >
 > > > > > > > > > > > > >    The EXT-X-TARGETDURATION tag specifies the
 maximum Media Segment
 > > > > > > > > > > > > >    duration.  The EXTINF duration of each Media
 Segment in the Playlist
 > > > > > > > > > > > > >    file, when rounded to the nearest integer,
 MUST be less than or equal
 > > > > > > > > > > > > >    to the target duration; longer segments can
 trigger playback stalls
 > > > > > > > > > > > > >    or other errors.  It applies to the entire
 Playlist file.  Its format
 > > > > > > > > > > > > >    is:
 > > > > > > > > > > > > >
 > > > > > > > > > > > > >    #EXT-X-TARGETDURATION:<s>
 > > > > > > > > > > > > >
 > > > > > > > > > > > > >    where s is a decimal-integer indicating the
 target duration in
 > > > > > > > > > > > > >    seconds.  The EXT-X-TARGETDURATION tag is
 REQUIRED.
 > > > > > > > > > > > > >
 > > > > > > > > > > > > > }}}
 > > > > > > > > > > > > >
 > > > > > > > > > > > > > So as per the spec, the EXT-X-TARGETDURATION
 should rounded to 4 instead of 5.
 > > > > > > > > > > > > >
 > > > > > > > > > > > > > But when I submitted a patch for fixing such an
 issue in hlsenc, it was rejected by Steven. See thread
 http://ffmpeg.org/pipermail/ffmpeg-devel/2017-September/215630.html more
 details. During that time, I was not able to provide a concrete example
 with mediastreamvalidator like @beloko has done now. But I thought the
 spec was very clear about it without any room for confusion.
 > > > > > > > > > > > > >
 > > > > > > > > > > > > > @stevenliu
 > > > > > > > > > > > > > If you have a change of mind after seeing these
 results, please let me know. Maybe I will send a new patch which fixes the
 target duration in dashenc, and we can take forward our discussions there.
 > > > > > > > > > > > >
 > > > > > > > > > > > > The spec said "EXT-X-TARGETDURATION must >
 EXTINF", we have talk and you have sent twice patch about it. you can see
 the spec said "MUST be less than or equal to the target duration.",
 attention the MUST, MUST, MUST, we should don't care the tool, we should
 care the spec. If the tool different with the spec, that maybe apple's
 mistake, you should push apple.
 > > > > > > > > > > > I think you missing the important line "'''when
 rounded to the nearest integer'''" in the spec. I am also only talking
 about the spec. This is just a pure argument, about interpreting that
 English line. This is where I feel some other people in the ffmpeg
 community should also pitch in moderate a discussion, rather than leaving
 it as "'''Maintainer is always right'''".
 > > > > > > > > > > '''Maintainer''' not always right, but can you give me
 the mean '''MUST be less than or equal  to the target duration''' how
 should i understand it?
 > > > > > > > > > "'''when rounded to the nearest integer, MUST be less
 than or equal to the target duration'''" is in one sentence. That should
 be read in conjunction with the phrase "when rounded to the nearest
 integer". It means after rounding duration to the nearest integer, it MUST
 be less than or equal to the target duration.
 > > > > > > > > how should i understand the '''target duration'''?
 > > > > > > > > do you mean, when the '''EXTINF''' is '''1.080000''', the
 '''EXT-X-TARGETDURATION''' should equal to '''1''' ?
 > > > > > > > As per the spec, Yes.
 > > > > > > I coding for hls from VERSION 1, from old VERSION,
 https://tools.ietf.org/html/draft-pantos-http-live-streaming-03
 > > > > > > about the EXT-X-TARGETDURATION said:
 > > > > > >
 > > > > > >
 > > > > > > {{{
 > > > > > > 3.2.1.  EXT-X-TARGETDURATION
 > > > > > >
 > > > > > >    The EXT-X-TARGETDURATION tag specifies the maximum media
 file
 > > > > > >    duration.  The EXTINF duration of each media file in the
 Playlist
 > > > > > >    file MUST be less than or equal to the target duration.
 This tag
 > > > > > >    MUST appear once in the Playlist file.  Its format is:
 > > > > > >
 > > > > > >    #EXT-X-TARGETDURATION:<s>
 > > > > > >
 > > > > > >    where s is an integer indicating the target duration in
 seconds.
 > > > > > > }}}
 > > > > > >
 > > > > > > so, i always understand it to EXT-X-TARGETDURATION must large
 than EXTINF,
 > > > > > > I have sent a Email to hls team of apple for check this
 description, maybe there have some misunderstanding words here.
 > > > > > In that version of HLS, floating point segment duration was not
 supported. The segment durations were already integers. Hence there is no
 question of rounding, when target duration was being defined.
 > > > > > But later when the floating point segment duration was supported
 in HLS, the definition for target duration was modified to specify "when
 rounded to nearest integer" to handle floating point segment durations.
 > > > >
 > > > > Sorry for my poor English, but i think the '''when rounded to the
 nearest integer''' is description for '''The EXTINF duration of each Media
 Segment in the Playlist file,''', because the they in one sentence, and
 the next sentence said  '''longer segments can trigger playback stalls or
 other errors''', so, the reason to make there have no '''longer segments
 can trigger playback stalls or other errors''' error, not use lrint.
 > > > > When EXTINF is 1.080000, set the EXT-X-TARGETDURATION to 2.
 > > > Well, let me explain that entire sentence as a pseudo code.
 > > >
 > > > {{{
 > > > The EXTINF duration of each Media Segment in the Playlist
 > > > file, when rounded to the nearest integer, MUST be less than or
 equal
 > > > to the target duration; longer segments can trigger playback stalls
 > > > or other errors.
 > > > }}}
 > > >
 > > > {{{
 > > > for each media segment {
 > > >  if (round(EXTINF_duration) <= target_duration) { //when rounded to
 the nearest integer, MUST be less than or equal to the target duration
 > > >   Everything is fine here
 > > >  } else { // longer segments ...
 > > >   //Basically when (round(EXTINF_duration) > target_duration)
 > > >   playback stalls or other errors can be triggered;
 > > >  }
 > > > }
 > > > }}}
 > > >
 > > > '''longer segments can trigger playback stalls or other errors''',
 is still part of the same sentence. This means longer after rounding to
 the nearest integer.
 > >
 > > what will happen when just round the target duration ?i think the
 EXTINF will large than target duration
 > round up it is no problem, but round down will have different result for
 users understand,This is why implement an api to process it for round up.
 Well as long as it follows the spec, we need not worry. If the players
 were implemented as per the HLS spec then they should handle this case
 correctly.
 >
 >
 > > > > > >
 > > > > > >
 > > > > > > > >
 > > > > > > > > > > > >
 > > > > > > > > > > > > >
 > > > > > > > > > > > > >
 > > > > > > > > > > > > >
 > > > > > > > > > > > > >
 > > > > > > > > > > > > >

--
Ticket URL: <https://trac.ffmpeg.org/ticket/6915#comment:21>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list