[FFmpeg-trac] #9190(avformat:new): dashenc creates web-unplayable files with copied opus streams

FFmpeg trac at avcodec.org
Thu Apr 15 07:01:47 EEST 2021


#9190: dashenc creates web-unplayable files with copied opus streams
--------------------------------------+------------------------------------
             Reporter:  aphysically   |                    Owner:
                 Type:  defect        |                   Status:  new
             Priority:  normal        |                Component:  avformat
              Version:  git-master    |               Resolution:
             Keywords:  dash dashenc  |               Blocked By:
             Blocking:                |  Reproduced by developer:  0
Analyzed by developer:  0             |
--------------------------------------+------------------------------------

Comment (by aphysically):

 Replying to [comment:1 jamrial]:
 > Can you apply this patch and re-run the command line to create
 dash/dashbad, to see if it fixes it?
 >
 > {{{
 > diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
 > index 6e0d9d7496..cc4a9e6f62 100644
 > --- a/libavformat/mpegts.c
 > +++ b/libavformat/mpegts.c
 > @@ -2018,7 +2018,6 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc,
 AVStream *st, int stream_type
 >                  if (!st->codecpar->extradata)
 >                      return AVERROR(ENOMEM);
 >
 > -                st->codecpar->extradata_size =
 sizeof(opus_default_extradata);
 >                  memcpy(st->codecpar->extradata, opus_default_extradata,
 sizeof(opus_default_extradata));
 >
 >                  channel_config_code = get8(pp, desc_end);
 > @@ -2030,8 +2029,10 @@ int ff_parse_mpeg2_descriptor(AVFormatContext
 *fc, AVStream *st, int stream_type
 >                      st->codecpar->extradata[19] =
 opus_stream_cnt[channel_config_code];
 >                      st->codecpar->extradata[20] =
 opus_coupled_stream_cnt[channel_config_code];
 >                      memcpy(&st->codecpar->extradata[21],
 opus_channel_map[channels - 1], channels);
 > +                    st->codecpar->extradata_size = 19 +
 (st->codecpar->extradata[18] ? 2 + channels : 0);
 >                  } else {
 >                      avpriv_request_sample(fc, "Opus in MPEG-TS -
 channel_config_code > 0x8");
 > +                    st->codecpar->extradata_size =
 sizeof(opus_default_extradata);
 >                  }
 >                  st->need_parsing = AVSTREAM_PARSE_FULL;
 >                  st->internal->need_context_update = 1;
 > }}}

 This results in a working stream with the dashbad command. See
 [https://stream.gably.net/images/dash/dashtest/stream.mpd] for a test
 stream with the copied opus and your patch ("dashtest").

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


More information about the FFmpeg-trac mailing list