[FFmpeg-trac] #9126(avformat:new): 404 when playing back DASH

FFmpeg trac at avcodec.org
Wed Feb 24 20:36:55 EET 2021


#9126: 404 when playing back DASH
----------------------------------+--------------------------------------
             Reporter:  hjmallon  |                     Type:  defect
               Status:  new       |                 Priority:  normal
            Component:  avformat  |                  Version:  git-master
             Keywords:  dash 404  |               Blocked By:
             Blocking:            |  Reproduced by developer:  0
Analyzed by developer:  0         |
----------------------------------+--------------------------------------
 Summary of the bug:
 How to reproduce:
 {{{
 % ffprobe http://192.168.1.18:8080/live/manifest.mpd
 ffprobe version 4.3.2 Copyright (c) 2007-2021 the FFmpeg developers
   built with Apple clang version 12.0.0 (clang-1200.0.32.29)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/4.3.2 --enable-shared
 --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-
 cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl
 --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame
 --enable-libopus --enable-librav1e --enable-librubberband --enable-
 libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora
 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp
 --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid
 --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r
 --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb
 --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr
 --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack
 --enable-videotoolbox
   libavutil      56. 51.100 / 56. 51.100
   libavcodec     58. 91.100 / 58. 91.100
   libavformat    58. 45.100 / 58. 45.100
   libavdevice    58. 10.100 / 58. 10.100
   libavfilter     7. 85.100 /  7. 85.100
   libavresample   4.  0.  0 /  4.  0.  0
   libswscale      5.  7.100 /  5.  7.100
   libswresample   3.  7.100 /  3.  7.100
   libpostproc    55.  7.100 / 55.  7.100
 [http @ 0x7f849d805580] HTTP error 404 Not Found
 [dash @ 0x7f849e00c000] Failed to open an initialization section in
 playlist 0
 [dash @ 0x7f849e00c000] Error when loading first fragment, playlist 0
 http://192.168.1.18:8080/live/manifest.mpd: Server returned 404 Not Found
 }}}

 This DASH manifest plays back in VLC OK. I have tracked the problem down
 to BaseURL handling in resolve_content_path. The manifest has a BaseURL in
 the AdaptationSet and another in the Representation.

 e.g.
 URL -  http://192.168.1.18:8080/live/manifest.mpd
 AdaptationSet/BaseURL - video/
 Representation/BaseURL - v_34_10000/

 The assets are under http://192.168.1.18:8080/live/video/v_34_10000/ but
 ffmpeg only concatenates the BaseURL with the Root URL (i.e.
 http://192.168.1.18:8080/live/v_34_10000/), rather than all the parent
 BaseURLs. I do not have access to the relevant standard so I don't know if
 concat parents is the expected behaviour (but that seems to be what VLC
 does).

 {{{
 <?xml version="1.0" encoding="UTF-8"?>
 <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" id="1614186048"
 profiles="urn:mpeg:dash:profile:full:2011" type="dynamic"
 availabilityStartTime="2021-02-24T17:00:49Z"
 publishTime="2021-02-24T18:02:43Z" minimumUpdatePeriod="PT2S"
 timeShiftBufferDepth="PT20S" minBufferTime="PT2S">
         <Period id="p0" start="PT0S">
                 <AdaptationSet contentType="video" segmentAlignment="true"
 mimeType="video/mp4" par="16:9" maxWidth="1920" maxHeight="1080"
 maxFrameRate="30.00/1001">
                         <BaseURL>video/</BaseURL>
                         <Representation id="v_34_10000"
 bandwidth="10000000" width="1920" height="1080" sar="1:1"
 frameRate="30.00/1001" codecs="hvc1.1.60000000.L93.B0.00.00.00.00.00"
 startWithSAP="1">
                                 <BaseURL>v_34_10000/</BaseURL>
                                 <SegmentTemplate timescale="30030"
 duration="84084" startNumber="1" media="1614186048_$Number$.m4s"
 initialization="1614186048_init.mp4"/>
                         </Representation>
                 </AdaptationSet>
                 <AdaptationSet contentType="audio" lang="und"
 segmentAlignment="true" mimeType="audio/mp4">
                         <BaseURL>audio/</BaseURL>
                         <Representation id="a_35_SAMPLE_RATE_48000"
 bandwidth="128000" audioSamplingRate="SAMPLE_RATE_48000"
 codecs="mp4a.40.2" startWithSAP="1">
                                 <BaseURL>a_35_SAMPLE_RATE_48000/</BaseURL>
                                 <AudioChannelConfiguration
 schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011"
 value="1"></AudioChannelConfiguration>
                                 <SegmentTemplate timescale="48000"
 duration="134400" startNumber="1" media="1614186048_$Number$.m4s"
 initialization="1614186048_init.mp4"/>
                         </Representation>
                 </AdaptationSet>
         </Period>
 </MPD>
 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/9126>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list