Recording MPEG-DASH live streams with FFmpeg

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Recording MPEG-DASH live streams with FFmpeg

Jörg Beckmann
Hi,

I'm trying to record MPEG-DASH live streams using FFmpeg 4.0.2, e.g.

./ffmpeg.exe -v 40 -i http://irtdashreference-i.akamaihd.net/dash/live/901161/bfs/manifestBR.mpd -c:a copy test.aac

The first few fragments are recorded correctly, but then I only get HTTP 404 responses:

[dash @ 000000000070cc40] Parsing 'http://irtdashreference-i.akamaihd.net/dash/live/901161/bfs/manifestBR.mpd' - skipp not supported representation type
[...]
[dash @ 000000000070cc40] DASH request for url 'http://irtdashreference-i.akamaihd.net/dash/live/901161/bfs/83c5debb3328a0e08b8c102b6d5ce378_1_audio_06-init.mp4', offset 0, playlist 0
[dash @ 000000000070cc40] Could not read complete fragment.
[dash @ 000000000070cc40] DASH request for url 'http://irtdashreference-i.akamaihd.net/dash/live/901161/bfs/83c5debb3328a0e08b8c102b6d5ce378_1_audio_06-133781.mp4', offset 0, playlist 0
[...]
Input #0, dash, from 'http://irtdashreference-i.akamaihd.net/dash/live/901161/bfs/manifestBR.mpd':
  Duration: N/A, start: 267558.240000, bitrate: N/A
  Program 0
    Stream #0:0: Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuv420p(tv, bt709, left), 1280x720 [SAR 1:1 DAR 16:9], 0 kb/s, 25 fps, 25 tbr, 10000k tbn, 50 tbc
    Metadata:
      variant_bitrate : 2000000
      id              : video_00
    Stream #0:1: Video: h264 (Main), 1 reference frame (avc1 / 0x31637661), yuv420p(tv, bt470bg, left), 960x540 (960x544) [SAR 1:1 DAR 16:9], 0 kb/s, 25 fps, 25 tbr, 10000k tbn, 20000k tbc
    Metadata:
      variant_bitrate : 1800000
      id              : video_01
    Stream #0:2: Video: h264 (Main), 1 reference frame (avc1 / 0x31637661), yuv420p(tv, bt470bg, left), 640x360 (640x368) [SAR 1:1 DAR 16:9], 0 kb/s, 25 fps, 25 tbr, 10000k tbn, 20000k tbc
    Metadata:
      variant_bitrate : 1024000
      id              : video_02
    Stream #0:3: Video: h264 (Main), 1 reference frame (avc1 / 0x31637661), yuv420p(tv, bt470bg, left), 512x288 [SAR 1:1 DAR 16:9], 0 kb/s, 25 fps, 25 tbr, 10000k tbn, 20000k tbc
    Metadata:
      variant_bitrate : 512000
      id              : video_03
    Stream #0:4: Video: h264 (Constrained Baseline), 1 reference frame (avc1 / 0x31637661), yuv420p(tv, bt470bg, left), 480x270 (480x272) [SAR 1:1 DAR 16:9], 0 kb/s, 25 fps, 25 tbr, 10000k tbn, 50 tbc
    Metadata:
      variant_bitrate : 256000
      id              : video_04
    Stream #0:5: Video: h264 (Constrained Baseline), 1 reference frame (avc1 / 0x31637661), yuv420p(tv, bt470bg, left), 320x180 (320x192) [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 10000k tbn, 50 tbc
    Metadata:
      variant_bitrate : 128000
      id              : video_05
    Stream #0:6: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 0 kb/s
    Metadata:
      variant_bitrate : 192000
      id              : audio_06
Output #0, adts, to 'test.aac':
  Metadata:
    encoder         : Lavf58.12.100
    Stream #0:0: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 0 kb/s
    Metadata:
      variant_bitrate : 192000
      id              : audio_06
Stream mapping:
  Stream #0:6 -> #0:0 (copy)
Press [q] to stop, [?] for help
[dash @ 000000000070cc40] No longer receiving stream_index 0
[dash @ 000000000070cc40] No longer receiving stream_index 1
[dash @ 000000000070cc40] No longer receiving stream_index 2
[dash @ 000000000070cc40] No longer receiving stream_index 3
[dash @ 000000000070cc40] No longer receiving stream_index 4
[dash @ 000000000070cc40] No longer receiving stream_index 5
[dash @ 000000000070cc40] DASH request for url 'http://irtdashreference-i.akamaihd.net/dash/live/901161/bfs/83c5debb3328a0e08b8c102b6d5ce378_1_audio_06-133782.mp4', offset 0, playlist 0
[dash @ 000000000070cc40] DASH request for url 'http://irtdashreference-i.akamaihd.net/dash/live/901161/bfs/83c5debb3328a0e08b8c102b6d5ce378_1_audio_06-133783.mp4', offset 0, playlist 0
[dash @ 000000000070cc40] new fragment: min[133758] max[133783], playlist 0
[dash @ 000000000070cc40] DASH request for url 'http://irtdashreference-i.akamaihd.net/dash/live/901161/bfs/83c5debb3328a0e08b8c102b6d5ce378_1_audio_06-133784.mp4', offset 0, playlist 0
[http @ 0000000000792d40] HTTP error 404 Not Found
[dash @ 000000000070cc40] Failed to open fragment of playlist 0
[dash @ 000000000070cc40] new fragment: min[133758] max[133783], playlist 0
[dash @ 000000000070cc40] DASH request for url 'http://irtdashreference-i.akamaihd.net/dash/live/901161/bfs/83c5debb3328a0e08b8c102b6d5ce378_1_audio_06-133785.mp4', offset 0, playlist 0
[http @ 0000000000792d40] HTTP error 404 Not Found
[dash @ 000000000070cc40] Failed to open fragment of playlist 0
[dash @ 000000000070cc40] new fragment: min[133758] max[133783], playlist 0
[dash @ 000000000070cc40] DASH request for url 'http://irtdashreference-i.akamaihd.net/dash/live/901161/bfs/83c5debb3328a0e08b8c102b6d5ce378_1_audio_06-133786.mp4', offset 0, playlist 0
[...]

I used wireshark to compare what's happening when using FFmpeg and when using the HTML demo player at http://subtitling.irt.de/

FFmpeg tries to read the stream as fast as possible resulting in requests for fragments not yet available, while the player requests the next fragment after 2 seconds. FFmpeg does not retry to read the fragments. It just increases the fragment number and tries the next one again and again.

Is there something I'm doing wrong or is this a bug in FFmpeg? I already looked into the current sources. The code for MPEG-DASH does not seem to have changed since 4.0.2.

Kind regards,
Jörg

_______________________________________________
ffmpeg-user mailing list
[hidden email]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Recording MPEG-DASH live streams with FFmpeg

Carl Eugen Hoyos-2
2018-08-20 11:07 GMT+02:00, Jörg Beckmann <[hidden email]>:

> I'm trying to record MPEG-DASH live streams using FFmpeg 4.0.2, e.g.

Only current FFmpeg git head is supported here.

> ./ffmpeg.exe -v 40 -i
> http://irtdashreference-i.akamaihd.net/dash/live/901161/bfs/manifestBR.mpd
> -c:a copy test.aac

For future questions and reports, please do not provide an excerpt of the
console output, always post the complete, uncut console output.

I opened ticket #7369, work-around is the input option "-re".

Thank you for the report, Carl Eugen
_______________________________________________
ffmpeg-user mailing list
[hidden email]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: Recording MPEG-DASH live streams with FFmpeg

Jörg Beckmann
In reply to this post by Jörg Beckmann
Thank you for your answer. With "-re" it's working as expected. BTW: HLS streams do not need "-re".

Regards, Jörg

-----Ursprüngliche Nachricht-----
Von: ffmpeg-user <[hidden email]> Im Auftrag von Carl Eugen Hoyos
Gesendet: Montag, 20. August 2018 17:34
An: FFmpeg user questions <[hidden email]>
Betreff: Re: [FFmpeg-user] Recording MPEG-DASH live streams with FFmpeg

2018-08-20 11:07 GMT+02:00, Jörg Beckmann <[hidden email]>:

> I'm trying to record MPEG-DASH live streams using FFmpeg 4.0.2, e.g.

Only current FFmpeg git head is supported here.

> ./ffmpeg.exe -v 40 -i
> http://irtdashreference-i.akamaihd.net/dash/live/901161/bfs/manifestBR
> .mpd
> -c:a copy test.aac

For future questions and reports, please do not provide an excerpt of the console output, always post the complete, uncut console output.

I opened ticket #7369, work-around is the input option "-re".

Thank you for the report, Carl Eugen
_______________________________________________
ffmpeg-user mailing list
[hidden email]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email [hidden email] with subject "unsubscribe".
_______________________________________________
ffmpeg-user mailing list
[hidden email]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".