Opened 23 months ago

Last modified 23 months ago

#10049 new defect

404 when playing a DASH

Reported by: changxiangzhong Owned by:
Priority: normal Component: undetermined
Version: git-master Keywords: DASH 404
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: yes

Description (last modified by changxiangzhong)

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

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@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.

Update 1
I've also tried with the same dash stream url without any parameters. Result remains the same - it works with dash.js, exoplayer and bitmovin. But not ffmpeg (master branch)

https://director.livecdn.teliaplay.net/notvm/mso/TV_1HD/dash/manifest.mpd

Change History (1)

comment:1 by changxiangzhong, 23 months ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.