[FFmpeg-trac] #10049(undetermined:new): 404 when playing a DASH

FFmpeg trac at avcodec.org
Fri Nov 18 12:02:30 EET 2022


#10049: 404 when playing a DASH
-------------------------------------+-------------------------------------
             Reporter:               |                     Type:  defect
  changxiangzhong                    |
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:  git-
  undetermined                       |  master
             Keywords:  DASH 404     |               Blocked By:
             Blocking:               |  Reproduced by developer:  1
Analyzed by developer:  1            |
-------------------------------------+-------------------------------------
 Summary of the bug:
 FFprobe cannot detect a DASH stream. With the same stream,  Players like
 ExoPlayer, MPEG-JS, Bitmovin works fine without any issue.

 How to reproduce:
 {{{
 ffprobe_g -loglevel trace
 https://director.livecdn.teliaplay.net/notvm/mso/TV_1HD/dash/manifest.mpd?abs_begin=2022-11-16T08:00:00Z&is_live&no_dolby
 }}}
 Patches should be submitted to the ffmpeg-devel mailing list and not this
 bug tracker.

 It complains certain file chunks end up with a 404 error. such as the
 following

 {{{
 [dash @ 0x559100d10880] new fragment: min[122164656] max[122164805]
 [dash @ 0x559100d10880] DASH request for url
 'https://director.livecdn.teliaplay.net/notvm/mso/TV_1HD/dash/video-
 stream-1-150188795682072.mp4', offset 0
 [https @ 0x559100d5bec0] Setting default whitelist
 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
 [tcp @ 0x559100d9b940] Original list of addresses:
 [tcp @ 0x559100d9b940] Address 84.208.9.141 port 443
 [tcp @ 0x559100d9b940] Address 84.208.9.75 port 443
 [tcp @ 0x559100d9b940] Address 84.208.9.142 port 443
 [tcp @ 0x559100d9b940] Address 84.208.9.76 port 443
 [tcp @ 0x559100d9b940] Address 2a02:fe0:1:cd1:570:323:3:75 port 443
 [tcp @ 0x559100d9b940] Address 2a02:fe0:1:cd1:570:323:2:75 port 443
 [tcp @ 0x559100d9b940] Address 2a02:fe0:1:cd1:570:323:2:76 port 443
 [tcp @ 0x559100d9b940] Address 2a02:fe0:1:cd1:570:323:3:76 port 443
 [tcp @ 0x559100d9b940] Interleaved list of addresses:
 [tcp @ 0x559100d9b940] Address 84.208.9.141 port 443
 [tcp @ 0x559100d9b940] Address 2a02:fe0:1:cd1:570:323:3:75 port 443
 [tcp @ 0x559100d9b940] Address 84.208.9.75 port 443
 [tcp @ 0x559100d9b940] Address 2a02:fe0:1:cd1:570:323:2:75 port 443
 [tcp @ 0x559100d9b940] Address 84.208.9.142 port 443
 [tcp @ 0x559100d9b940] Address 2a02:fe0:1:cd1:570:323:2:76 port 443
 [tcp @ 0x559100d9b940] Address 84.208.9.76 port 443
 [tcp @ 0x559100d9b940] Address 2a02:fe0:1:cd1:570:323:3:76 port 443
 [tcp @ 0x559100d9b940] Starting connection attempt to 84.208.9.141 port
 443
 [tcp @ 0x559100d9b940] Successfully connected to 84.208.9.141 port 443
 [https @ 0x559100d5bec0] request: GET /notvm/mso/TV_1HD/dash/video-
 stream-1-150188795682072.mp4 HTTP/1.1
 User-Agent: Lavf/58.76.100
 Accept: */*
 Connection: close
 Host: director.livecdn.teliaplay.net
 Icy-MetaData: 1


 [https @ 0x559100d5bec0] header='HTTP/1.1 302 Found'
 [https @ 0x559100d5bec0] http_code=302
 [https @ 0x559100d5bec0] header='Cache-Control: no-store'
 [https @ 0x559100d5bec0] header='Content-Type: text/plain; charset=utf-8'
 [https @ 0x559100d5bec0] header='Location:
 https://m323-cdne01.livecdn.teliaplay.net/notvm/mso/TV_1HD/dash/video-
 stream-1-150188795682072.mp4'
 [https @ 0x559100d5bec0] header='Date: Fri, 18 Nov 2022 09:39:58 GMT'
 [https @ 0x559100d5bec0] header='Content-Length: 0'
 [https @ 0x559100d5bec0] header='Access-Control-Allow-Origin: *'
 [https @ 0x559100d5bec0] header='Age: 0'
 [https @ 0x559100d5bec0] header='Connection: close'
 [https @ 0x559100d5bec0] header=''
 [tcp @ 0x559100d52a80] Original list of addresses:
 [tcp @ 0x559100d52a80] Address 84.208.9.21 port 443
 [tcp @ 0x559100d52a80] Address 2a02:fe0:1:cd1:570:323:2:21 port 443
 [tcp @ 0x559100d52a80] Interleaved list of addresses:
 [tcp @ 0x559100d52a80] Address 84.208.9.21 port 443
 [tcp @ 0x559100d52a80] Address 2a02:fe0:1:cd1:570:323:2:21 port 443
 [tcp @ 0x559100d52a80] Starting connection attempt to 84.208.9.21 port 443
 [tcp @ 0x559100d52a80] Successfully connected to 84.208.9.21 port 443
 [https @ 0x559100d5bec0] request: GET /notvm/mso/TV_1HD/dash/video-
 stream-1-150188795682072.mp4 HTTP/1.1
 User-Agent: Lavf/58.76.100
 Accept: */*
 Connection: close
 Host: m323-cdne01.livecdn.teliaplay.net
 Icy-MetaData: 1


 [https @ 0x559100d5bec0] header='HTTP/1.1 404 Not Found'
 [https @ 0x559100d5bec0] http_code=404
 [https @ 0x559100d5bec0] HTTP error 404 Not Found
 [dash @ 0x559100d10880] Failed to open fragment of playlist
 }}}

 To debug the issue, I've tried both CURL & WGET to download the file chunk
 without any issue

 {{{
 chang at my_linux:~/Desktop/fix_ffmpeg_telia$ curl -L 4 -vvv --user-agent
 "Lavf/58.76.100" -H "Connection: close" -H "Icy-MetaData: 1"
 https://director.livecdn.teliaplay.net/notvm/mso/TV_1HD/dash/video-
 stream-1-150188795682072.mp4  --output -
 *   Trying 0.0.0.4:80...
 * Immediate connect fail for 0.0.0.4: No route to host
 * Closing connection 0
 curl: (7) Couldn't connect to server
 *   Trying 84.208.9.76:443...
 * Connected to director.livecdn.teliaplay.net (84.208.9.76) port 443 (#1)
 * ALPN, offering h2
 * ALPN, offering http/1.1
 * successfully set certificate verify locations:
 *  CAfile: /etc/ssl/cert.pem
 *  CApath: none
 * (304) (OUT), TLS handshake, Client hello (1):
 * (304) (IN), TLS handshake, Server hello (2):
 * (304) (IN), TLS handshake, Unknown (8):
 * (304) (IN), TLS handshake, Certificate (11):
 * (304) (IN), TLS handshake, CERT verify (15):
 * (304) (IN), TLS handshake, Finished (20):
 * (304) (OUT), TLS handshake, Finished (20):
 * SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256
 * ALPN, server accepted to use h2
 * Server certificate:
 *  subject: C=SE; L=SOLNA; O=Telia Company AB; CN=*.livecdn.teliaplay.net
 *  start date: Feb  9 06:41:47 2022 GMT
 *  expire date: Feb  9 06:41:47 2023 GMT
 *  subjectAltName: host "director.livecdn.teliaplay.net" matched cert's
 "*.livecdn.teliaplay.net"
 *  issuer: C=FI; O=TeliaSonera; CN=TeliaSonera Server CA v2
 *  SSL certificate verify ok.
 * Using HTTP2, server supports multiplexing
 * Connection state changed (HTTP/2 confirmed)
 * Copying HTTP/2 data in stream buffer to connection buffer after upgrade:
 len=0
 * Using Stream ID: 1 (easy handle 0x128008c00)
 > GET /notvm/mso/TV_1HD/dash/video-stream-1-150188795682072.mp4 HTTP/2
 > Host: director.livecdn.teliaplay.net
 > user-agent: Lavf/58.76.100
 > accept: */*
 > connection: close
 > icy-metadata: 1
 >
 < HTTP/2 302
 < cache-control: no-store
 < content-type: text/plain; charset=utf-8
 < location:
 https://m323-cdne01.livecdn.teliaplay.net/notvm/mso/TV_1HD/dash/video-
 stream-1-150188795682072.mp4
 < date: Fri, 18 Nov 2022 09:45:25 GMT
 < content-length: 0
 < access-control-allow-origin: *
 < age: 0
 <
 * Connection #1 to host director.livecdn.teliaplay.net left intact
 * Issue another request to this URL:
 'https://m323-cdne01.livecdn.teliaplay.net/notvm/mso/TV_1HD/dash/video-
 stream-1-150188795682072.mp4'
 *   Trying 84.208.9.21:443...
 * Connected to m323-cdne01.livecdn.teliaplay.net (84.208.9.21) port 443
 (#2)
 * ALPN, offering h2
 * ALPN, offering http/1.1
 * successfully set certificate verify locations:
 *  CAfile: /etc/ssl/cert.pem
 *  CApath: none
 * (304) (OUT), TLS handshake, Client hello (1):
 * (304) (IN), TLS handshake, Server hello (2):
 * (304) (IN), TLS handshake, Unknown (8):
 * (304) (IN), TLS handshake, Certificate (11):
 * (304) (IN), TLS handshake, CERT verify (15):
 * (304) (IN), TLS handshake, Finished (20):
 * (304) (OUT), TLS handshake, Finished (20):
 * SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256
 * ALPN, server accepted to use h2
 * Server certificate:
 *  subject: C=SE; L=SOLNA; O=Telia Company AB; CN=*.livecdn.teliaplay.net
 *  start date: Feb  9 06:41:47 2022 GMT
 *  expire date: Feb  9 06:41:47 2023 GMT
 *  subjectAltName: host "m323-cdne01.livecdn.teliaplay.net" matched cert's
 "*.livecdn.teliaplay.net"
 *  issuer: C=FI; O=TeliaSonera; CN=TeliaSonera Server CA v2
 *  SSL certificate verify ok.
 * Using HTTP2, server supports multiplexing
 * Connection state changed (HTTP/2 confirmed)
 * Copying HTTP/2 data in stream buffer to connection buffer after upgrade:
 len=0
 * Using Stream ID: 1 (easy handle 0x128008c00)
 > GET /notvm/mso/TV_1HD/dash/video-stream-1-150188795682072.mp4 HTTP/2
 > Host: m323-cdne01.livecdn.teliaplay.net
 > user-agent: Lavf/58.76.100
 > accept: */*
 > connection: close
 > icy-metadata: 1
 >
 < HTTP/2 200
 < cache-control: public, max-age=7200
 < content-length: 1168457
 < content-type: video/mp4
 < date: Fri, 18 Nov 2022 09:40:00 GMT
 < etag: "2022-11-18T09:39:58.480"
 < last-modified: Fri, 18 Nov 2022 09:39:58 GMT
 < last-modified-milliseconds: Fri, 18 Nov 2022 09:39:58.480 GMT
 < origin-instance: so-service-02
 < access-control-allow-origin: *
 < age: 324
 < accept-ranges: bytes
 <
 Warning: Binary output can mess up your terminal. Use "--output -" to tell
 Warning: curl to output it to your terminal anyway, or consider "--output
 Warning: <FILE>" to save to a file.
 * Failure writing output to destination
 * stopped the pause stream!
 * Connection #2 to host m323-cdne01.livecdn.teliaplay.net left intact
 }}}

 I've already tweak the CURL command to send additional headers just like
 ffprobe. But CURL still works as expected.
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10049>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list