Opened 2 years ago

#9615 new defect

MPD playback failed when baseurl is relative addres

Reported by: luckysk Owned by:
Priority: important Component: avcodec
Version: git-master Keywords: dashdec
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

I use mpv player to play the following stream:
mpv https://dash.akamaized.net/dash264/TestCasesHD/MultiPeriod_OnDemand/ThreePeriods/ThreePeriod_OnDemand_presentationDur.mpd


[ 0.012][v][ffmpeg] Opening https://dash.akamaized.net/dash264/TestCasesHD/MultiPeriod_OnDemand/TwoPeriods/TwoPeriod_OnDemand.mpd
[ 0.012][t][ffmpeg] https: Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
[ 0.025][t][ffmpeg] tcp: Original list of addresses:
[ 0.025][t][ffmpeg] tcp: Address 23.215.177.211 port 443
[ 0.025][t][ffmpeg] tcp: Address 23.215.177.200 port 443
[ 0.025][t][ffmpeg] tcp: Interleaved list of addresses:
[ 0.025][t][ffmpeg] tcp: Address 23.215.177.211 port 443
[ 0.025][t][ffmpeg] tcp: Address 23.215.177.200 port 443
[ 0.025][d][ffmpeg] tcp: Starting connection attempt to 23.215.177.211 port 443
[ 0.029][d][ffmpeg] tcp: Successfully connected to 23.215.177.211 port 443
[ 0.388][t][ffmpeg] https: request: GET /dash264/TestCasesHD/MultiPeriod_OnDemand/TwoPeriods/TwoPeriod_OnDemand.mpd HTTP/1.1
[ 0.388][t][ffmpeg] User-Agent: libmpv
[ 0.388][t][ffmpeg] Accept: /
[ 0.388][t][ffmpeg] Range: bytes=0-
[ 0.388][t][ffmpeg] Connection: close
[ 0.388][t][ffmpeg] Host: dash.akamaized.net
[ 0.388][t][ffmpeg] Icy-MetaData: 1
[ 0.388][t][ffmpeg]
[ 0.388][t][ffmpeg]
[ 0.442][t][ffmpeg] https: header='HTTP/1.1 200 OK'
[ 0.442][t][ffmpeg] https: http_code=200
[ 0.442][t][ffmpeg] https: header='ETag: "b97e4f97517eb328009ff70eab6312c2:1534859164"'
[ 0.442][t][ffmpeg] https: header='Last-Modified: Tue, 21 Aug 2018 13:46:04 GMT'
[ 0.442][t][ffmpeg] https: header='Server: AkamaiNetStorage'
[ 0.442][t][ffmpeg] https: header='Cache-Control: max-age=23001486'
[ 0.442][t][ffmpeg] https: header='Date: Thu, 27 Jan 2022 06:52:09 GMT'
[ 0.442][t][ffmpeg] https: header='Alt-Svc: h3-Q050=":443"; ma=93600,quic=":443"; ma=93600; v="46,43"'
[ 0.442][t][ffmpeg] https: header='Content-Length: 4425'
[ 0.442][t][ffmpeg] https: header='Connection: close'
[ 0.442][t][ffmpeg] https: header='Akamai-Mon-Iucid-Del: 941106'
[ 0.442][t][ffmpeg] https: header='Content-Type: application/dash+xml'
[ 0.442][t][ffmpeg] https: header='Timing-Allow-Origin: *'
[ 0.443][t][ffmpeg] https: header='Access-Control-Max-Age: 86400'
[ 0.443][t][ffmpeg] https: header='Access-Control-Allow-Credentials: true'
[ 0.443][t][ffmpeg] https: header='Access-Control-Expose-Headers: Server,range,Date,hdntl,hdnts,Akamai-Mon-Iucid-Ing,Akamai-Mon-Iucid-Del,Akamai-Request-BC,Content-Length,Content-Range,Geo-Info,Quic-Version'
[ 0.443][t][ffmpeg] https: header='Access-Control-Allow-Headers: origin,range,hdntl,hdnts,accept-encoding,referer,CMCD-Request,CMCD-Object,CMCD-Status,CMCD-Session'
[ 0.443][t][ffmpeg] https: header='Access-Control-Allow-Methods: GET,POST,OPTIONS'
[ 0.443][t][ffmpeg] https: header='Access-Control-Allow-Origin: *'
[ 0.443][t][ffmpeg] https: header=
[ 0.443][d][ffmpeg] resize stream to 131072 bytes, drop 0 bytes
[ 0.443][v][ffmpeg] Mime-type: 'application/dash+xml'
[ 0.443][d][ffmpeg] Stream opened successfully.
[ 0.443][v][demux] Trying demuxers for level=normal.
[ 0.443][d][demux] Trying demuxer: disc (force-level: normal)
[ 0.443][t][ffmpeg] seek request from 0 to 0
[ 0.443][d][demux] Trying demuxer: edl (force-level: normal)
[ 0.443][t][ffmpeg] seek request from 0 to 0
[ 0.443][d][demux] Trying demuxer: cue (force-level: normal)
[ 0.443][t][ffmpeg] seek request from 0 to 0
[ 0.443][d][demux] Trying demuxer: rawaudio (force-level: normal)
[ 0.443][t][ffmpeg] seek request from 0 to 0
[ 0.443][d][demux] Trying demuxer: rawvideo (force-level: normal)
[ 0.443][t][ffmpeg] seek request from 0 to 0
[ 0.443][d][demux] Trying demuxer: mkv (force-level: normal)
[ 0.443][t][ffmpeg] seek request from 0 to 0
[ 0.443][d][demux] Trying demuxer: lavf (force-level: normal)
[ 0.443][t][ffmpeg] seek request from 3 to 0
[ 0.455][t][ffmpeg] Probing dash score:100 size:2048
[ 0.456][v][lavf] Found 'dash' at score=100 size=2048.
[ 0.458][t][lavf] Skipping nested option: 'user_agent'
[ 0.458][t][lavf] Skipping nested option: 'tls_verify'
[ 0.458][t][lavf] Skipping nested option: 'icy'
[ 0.458][t][lavf] Skipping nested option: 'timeout'
[ 0.458][t][ffmpeg/demuxer] dash: Opening 'https://dash.akamaized.net/dash264/TestCasesHD/MultiPeriod_OnDemand/TwoPeriods/TwoPeriod_OnDemand.mpd' for reading
[ 0.458][t][ffmpeg] https: Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
[ 0.464][t][ffmpeg] tcp: Original list of addresses:
[ 0.464][t][ffmpeg] tcp: Address 23.215.177.211 port 443
[ 0.464][t][ffmpeg] tcp: Address 23.215.177.200 port 443
[ 0.464][t][ffmpeg] tcp: Interleaved list of addresses:
[ 0.464][t][ffmpeg] tcp: Address 23.215.177.211 port 443
[ 0.464][t][ffmpeg] tcp: Address 23.215.177.200 port 443
[ 0.464][d][ffmpeg] tcp: Starting connection attempt to 23.215.177.211 port 443
[ 0.477][d][ffmpeg] tcp: Successfully connected to 23.215.177.211 port 443
[ 0.698][t][ffmpeg] https: request: GET /dash264/TestCasesHD/MultiPeriod_OnDemand/TwoPeriods/TwoPeriod_OnDemand.mpd HTTP/1.1
[ 0.698][t][ffmpeg] User-Agent: libmpv
[ 0.698][t][ffmpeg] Accept: /
[ 0.698][t][ffmpeg] Range: bytes=0-
[ 0.698][t][ffmpeg] Connection: close
[ 0.698][t][ffmpeg] Host: dash.akamaized.net
[ 0.698][t][ffmpeg] Icy-MetaData: 1
[ 0.698][t][ffmpeg]
[ 0.698][t][ffmpeg]
[ 0.888][t][ffmpeg] https: header='HTTP/1.1 200 OK'
[ 0.888][t][ffmpeg] https: http_code=200
[ 0.888][t][ffmpeg] https: header='ETag: "b97e4f97517eb328009ff70eab6312c2:1534859164"'
[ 0.888][t][ffmpeg] https: header='Last-Modified: Tue, 21 Aug 2018 13:46:04 GMT'
[ 0.888][t][ffmpeg] https: header='Server: AkamaiNetStorage'
[ 0.888][t][ffmpeg] https: header='Cache-Control: max-age=23001486'
[ 0.888][t][ffmpeg] https: header='Date: Thu, 27 Jan 2022 06:52:09 GMT'
[ 0.888][t][ffmpeg] https: header='Alt-Svc: h3-Q050=":443"; ma=93600,quic=":443"; ma=93600; v="46,43"'
[ 0.888][t][ffmpeg] https: header='Content-Length: 4425'
[ 0.888][t][ffmpeg] https: header='Connection: close'
[ 0.888][t][ffmpeg] https: header='Akamai-Mon-Iucid-Del: 941106'
[ 0.888][t][ffmpeg] https: header='Content-Type: application/dash+xml'
[ 0.888][t][ffmpeg] https: header='Timing-Allow-Origin: *'
[ 0.888][t][ffmpeg] https: header='Access-Control-Max-Age: 86400'
[ 0.888][t][ffmpeg] https: header='Access-Control-Allow-Credentials: true'
[ 0.888][t][ffmpeg] https: header='Access-Control-Expose-Headers: Server,range,Date,hdntl,hdnts,Akamai-Mon-Iucid-Ing,Akamai-Mon-Iucid-Del,Akamai-Request-BC,Content-Length,Content-Range,Geo-Info,Quic-Version'
[ 0.888][t][ffmpeg] https: header='Access-Control-Allow-Headers: origin,range,hdntl,hdnts,accept-encoding,referer,CMCD-Request,CMCD-Object,CMCD-Status,CMCD-Session'
[ 0.888][t][ffmpeg] https: header='Access-Control-Allow-Methods: GET,POST,OPTIONS'
[ 0.888][t][ffmpeg] https: header='Access-Control-Allow-Origin: *'
[ 0.889][t][ffmpeg] https: header=

[ 0.889][t][ffmpeg/demuxer] dash: c->min_buffer_time = [1]
[ 0.889][t][ffmpeg/demuxer] dash: c->media_presentation_duration = [594]
[ 0.890][d][ffmpeg/demuxer] dash: DASH request for url 'https://dash.akamaized.net/dash264/TestCasesHD/MultiPeriod_OnDemand/TwoPeriods/BBB_1080_1M_video_init.mp4', offset 0
[ 0.890][t][ffmpeg] https: Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
[ 0.936][t][ffmpeg] tcp: Original list of addresses:
[ 0.936][t][ffmpeg] tcp: Address 23.215.177.211 port 443
[ 0.936][t][ffmpeg] tcp: Address 23.215.177.200 port 443
[ 0.936][t][ffmpeg] tcp: Interleaved list of addresses:
[ 0.936][t][ffmpeg] tcp: Address 23.215.177.211 port 443
[ 0.936][t][ffmpeg] tcp: Address 23.215.177.200 port 443
[ 0.936][d][ffmpeg] tcp: Starting connection attempt to 23.215.177.211 port 443
[ 0.939][d][ffmpeg] tcp: Successfully connected to 23.215.177.211 port 443
[ 1.541][t][ffmpeg] https: request: GET /dash264/TestCasesHD/MultiPeriod_OnDemand/TwoPeriods/BBB_1080_1M_video_init.mp4 HTTP/1.1
[ 1.542][t][ffmpeg] User-Agent: libmpv
[ 1.542][t][ffmpeg] Accept: /
[ 1.542][t][ffmpeg] Range: bytes=0-
[ 1.542][t][ffmpeg] Connection: close
[ 1.542][t][ffmpeg] Host: dash.akamaized.net
[ 1.542][t][ffmpeg] Icy-MetaData: 1
[ 1.542][t][ffmpeg]
[ 1.542][t][ffmpeg]
[ 3.713][t][ffmpeg] https: header='HTTP/1.1 404 Not Found'
[ 3.713][t][ffmpeg] https: http_code=404
[ 3.713][w][ffmpeg] https: HTTP error 404 Not Found
[ 3.715][w][ffmpeg/demuxer] dash: Failed to open fragment of playlist
[ 3.717][e][ffmpeg/demuxer] dash: Error when loading first fragment of playlist
[ 3.717][d][ffmpeg] AVIOContext: Statistics: 4425 bytes read, 0 seeks
[ 3.719][e][lavf] avformat_open_input() failed
[ 3.719][w][lavf] Leaking 1 nested connections (FFmpeg bug).
[ 3.719][d][demux] Trying demuxer: mf (force-level: normal)
[ 3.719][t][ffmpeg] seek request from 0 to 0
[ 3.720][d][demux] Trying demuxer: playlist (force-level: normal)
[ 3.720][t][ffmpeg] seek request from 0 to 0
[ 3.722][d][demux] Trying demuxer: null (force-level: normal)
[ 3.722][t][ffmpeg] seek request from 0 to 0
[ 3.722][v][demux] Trying demuxers for level=unsafe.
[ 3.722][d][demux] Trying demuxer: disc (force-level: unsafe)
[ 3.722][t][ffmpeg] seek request from 0 to 0
[ 3.722][d][demux] Trying demuxer: edl (force-level: unsafe)
[ 3.722][t][ffmpeg] seek request from 0 to 0
[ 3.722][d][demux] Trying demuxer: cue (force-level: unsafe)
[ 3.722][t][ffmpeg] seek request from 0 to 0
[ 3.722][d][demux] Trying demuxer: rawaudio (force-level: unsafe)
[ 3.722][t][ffmpeg] seek request from 0 to 0
[ 3.722][d][demux] Trying demuxer: rawvideo (force-level: unsafe)
[ 3.722][t][ffmpeg] seek request from 0 to 0
[ 3.722][d][demux] Trying demuxer: mkv (force-level: unsafe)
[ 3.722][t][ffmpeg] seek request from 0 to 0
[ 3.722][d][demux] Trying demuxer: lavf (force-level: unsafe)
[ 3.722][t][ffmpeg] seek request from 3 to 0
[ 3.732][t][ffmpeg] Probing dash score:100 size:2048
[ 3.733][v][lavf] Found 'dash' at score=100 size=2048.
[ 3.733][t][lavf] Skipping nested option: 'user_agent'
[ 3.733][t][lavf] Skipping nested option: 'tls_verify'
[ 3.733][t][lavf] Skipping nested option: 'icy'
[ 3.733][t][lavf] Skipping nested option: 'timeout'
[ 3.733][t][ffmpeg/demuxer] dash: Opening 'https://dash.akamaized.net/dash264/TestCasesHD/MultiPeriod_OnDemand/TwoPeriods/TwoPeriod_OnDemand.mpd' for reading
[ 3.733][t][ffmpeg] https: Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
[ 3.748][t][ffmpeg] tcp: Original list of addresses:
[ 3.748][t][ffmpeg] tcp: Address 23.215.177.211 port 443
[ 3.748][t][ffmpeg] tcp: Address 23.215.177.200 port 443
[ 3.748][t][ffmpeg] tcp: Interleaved list of addresses:
[ 3.748][t][ffmpeg] tcp: Address 23.215.177.211 port 443
[ 3.748][t][ffmpeg] tcp: Address 23.215.177.200 port 443
[ 3.748][d][ffmpeg] tcp: Starting connection attempt to 23.215.177.211 port 443
[ 3.783][d][ffmpeg] tcp: Successfully connected to 23.215.177.211 port 443
[ 4.044][t][ffmpeg] https: request: GET /dash264/TestCasesHD/MultiPeriod_OnDemand/TwoPeriods/TwoPeriod_OnDemand.mpd HTTP/1.1
[ 4.044][t][ffmpeg] User-Agent: libmpv
[ 4.044][t][ffmpeg] Accept: /
[ 4.044][t][ffmpeg] Range: bytes=0-
[ 4.044][t][ffmpeg] Connection: close
[ 4.044][t][ffmpeg] Host: dash.akamaized.net
[ 4.044][t][ffmpeg] Icy-MetaData: 1
[ 4.044][t][ffmpeg]
[ 4.044][t][ffmpeg]
[ 4.101][t][ffmpeg] https: header='HTTP/1.1 200 OK'
[ 4.101][t][ffmpeg] https: http_code=200
[ 4.101][t][ffmpeg] https: header='ETag: "b97e4f97517eb328009ff70eab6312c2:1534859164"'
[ 4.101][t][ffmpeg] https: header='Last-Modified: Tue, 21 Aug 2018 13:46:04 GMT'
[ 4.101][t][ffmpeg] https: header='Server: AkamaiNetStorage'
[ 4.101][t][ffmpeg] https: header='Cache-Control: max-age=23001483'
[ 4.101][t][ffmpeg] https: header='Date: Thu, 27 Jan 2022 06:52:12 GMT'
[ 4.101][t][ffmpeg] https: header='Alt-Svc: h3-Q050=":443"; ma=93600,quic=":443"; ma=93600; v="46,43"'
[ 4.101][t][ffmpeg] https: header='Content-Length: 4425'
[ 4.101][t][ffmpeg] https: header='Connection: close'
[ 4.101][t][ffmpeg] https: header='Akamai-Mon-Iucid-Del: 941106'
[ 4.101][t][ffmpeg] https: header='Content-Type: application/dash+xml'
[ 4.101][t][ffmpeg] https: header='Timing-Allow-Origin: *'
[ 4.101][t][ffmpeg] https: header='Access-Control-Max-Age: 86400'
[ 4.101][t][ffmpeg] https: header='Access-Control-Allow-Credentials: true'
[ 4.101][t][ffmpeg] https: header='Access-Control-Expose-Headers: Server,range,Date,hdntl,hdnts,Akamai-Mon-Iucid-Ing,Akamai-Mon-Iucid-Del,Akamai-Request-BC,Content-Length,Content-Range,Geo-Info,Quic-Version'
[ 4.101][t][ffmpeg] https: header='Access-Control-Allow-Headers: origin,range,hdntl,hdnts,accept-encoding,referer,CMCD-Request,CMCD-Object,CMCD-Status,CMCD-Session'
[ 4.101][t][ffmpeg] https: header='Access-Control-Allow-Methods: GET,POST,OPTIONS'
[ 4.101][t][ffmpeg] https: header='Access-Control-Allow-Origin: *'
[ 4.101][t][ffmpeg] https: header=
[ 4.101][t][ffmpeg/demuxer] dash: c->min_buffer_time = [1]
[ 4.102][t][ffmpeg/demuxer] dash: c->media_presentation_duration = [594]
[ 4.102][d][ffmpeg/demuxer] dash: DASH request for url 'https://dash.akamaized.net/dash264/TestCasesHD/MultiPeriod_OnDemand/TwoPeriods/BBB_1080_1M_video_init.mp4', offset 0
[ 4.102][t][ffmpeg] https: Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
[ 4.128][t][ffmpeg] tcp: Original list of addresses:
[ 4.128][t][ffmpeg] tcp: Address 23.215.177.211 port 443
[ 4.128][t][ffmpeg] tcp: Address 23.215.177.200 port 443
[ 4.128][t][ffmpeg] tcp: Interleaved list of addresses:
[ 4.128][t][ffmpeg] tcp: Address 23.215.177.211 port 443
[ 4.128][t][ffmpeg] tcp: Address 23.215.177.200 port 443
[ 4.128][d][ffmpeg] tcp: Starting connection attempt to 23.215.177.211 port 443
[ 4.140][d][ffmpeg] tcp: Successfully connected to 23.215.177.211 port 443
[ 4.397][t][ffmpeg] https: request: GET /dash264/TestCasesHD/MultiPeriod_OnDemand/TwoPeriods/BBB_1080_1M_video_init.mp4 HTTP/1.1
[ 4.397][t][ffmpeg] User-Agent: libmpv
[ 4.397][t][ffmpeg] Accept: /
[ 4.397][t][ffmpeg] Range: bytes=0-
[ 4.397][t][ffmpeg] Connection: close
[ 4.397][t][ffmpeg] Host: dash.akamaized.net
[ 4.397][t][ffmpeg] Icy-MetaData: 1
[ 4.397][t][ffmpeg]
[ 4.397][t][ffmpeg]
[ 6.170][t][ffmpeg] https: header='HTTP/1.1 404 Not Found'
[ 6.170][t][ffmpeg] https: http_code=404
[ 6.170][w][ffmpeg] https: HTTP error 404 Not Found
[ 6.173][w][ffmpeg/demuxer] dash: Failed to open fragment of playlist
[ 6.173][e][ffmpeg/demuxer] dash: Error when loading first fragment of playlist
[ 6.173][d][ffmpeg] AVIOContext: Statistics: 4425 bytes read, 0 seeks
[ 6.176][e][lavf] avformat_open_input() failed
[ 6.176][w][lavf] Leaking 1 nested connections (FFmpeg bug).
[ 6.176][d][demux] Trying demuxer: mf (force-level: unsafe)
[ 6.176][t][ffmpeg] seek request from 0 to 0
[ 6.176][d][demux] Trying demuxer: playlist (force-level: unsafe)
[ 6.176][t][ffmpeg] seek request from 0 to 0
[ 6.177][d][demux] Trying demuxer: null (force-level: unsafe)
[ 6.177][t][ffmpeg] seek request from 0 to 0
[ 6.177][d][ffmpeg] AVIOContext: Statistics: 4425 bytes read, 0 seeks
[ 6.179][v][cplayer] Opening failed or was aborted: https://dash.akamaized.net/dash264/TestCasesHD/MultiPeriod_OnDemand/TwoPeriods/TwoPeriod_OnDemand.mpd
[ 6.180][v][cplayer] finished playback, unrecognized file format (reason 4)
[ 6.180][e][cplayer] Failed to recognize file format.
[ 6.180][i][cplayer]
[ 6.180][i][cplayer] Exiting... (Errors when loading file)


I compared GStreamer and other players that can play those stream,the correct request address should be:
https://dash.akamaized.net/dash264/TestCasesHD/1a/qualcomm/1/BBB_1080_1M_video_init.mp4,
But mpv is https://dash.akamaized.net/dash264/TestCasesHD/MultiPeriod_OnDemand/TwoPeriods/BBB_1080_1M_video_init.mp4

Change History (0)

Note: See TracTickets for help on using tickets.