Opened 2 years ago

#9701 new defect

DASH: Cannot skip to unbuffered video parts in ffmpeg > 4.2.2

Reported by: cars10 Owned by:
Priority: normal Component: undetermined
Version: 4.2.4 Keywords: DASH
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

When using DASH with ffmpeg <= 4.2.2 i can skip to unbuffered parts in the video (tested with the official dash.js client and with shaka player).
With every version >4.2.2 this is not possible, the video does not load.

Link to playable MPD file:

You can test these files in any dash capable player, for example

How to reproduce:

  1. Get a test video, for example this 1080p test video of a timer: https://static.cars10k.de/dash-error/input.mp4
  2. Create 480p and 720p version of the video

480p

bash -c "ffmpeg -y -i input.mp4 -map 0:v:0 -vsync passthrough -c:v libx264 -keyint_min 24 -g 24 -sc_threshold 0 -crf 23 -maxrate 2500k -bufsize 5M -profile:v main -preset slow -an -dn -sn -write_tmcd 0 -map_chapters -1 -vf scale='trunc(oh*a/2)'*2:480 -movflags +faststart -aspect 16:9 output480.mp4"

720p

bash -c "ffmpeg -y -i input.mp4 -map 0:v:0 -vsync passthrough -c:v libx264 -keyint_min 24 -g 24 -sc_threshold 0 -crf 20 -maxrate 5M -bufsize 10M -profile:v main -preset slow -an -dn -sn -write_tmcd 0 -map_chapters -1 -vf scale='trunc(oh*a/2)'*2:720 -movflags +faststart -aspect 16:9 output720.mp4"
  1. Generate dash manifest
bash -c 'ffmpeg -y -i output480.mp4 -i output720.mp4 -c copy \
        -map 0:v:0 -map 0:v:0 -f dash -single_file 1 -single_file_name stream-\$RepresentationID\$.m4s \
        -adaptation_sets "id=0,streams=0,1" manifest.mpd'
  1. Load the manifest in a dash capable player, for example
  1. Immediately skip to an unbuffered part of the video (just click on the progress bar near the end)

Observed behavior

FFMPEG <= 4.2.2 works as expected. You can skip to an unbuffered part, the player loads the video, and starts playing.

FFMPEG > 4.2.2 does not work. It does not load the needed parts and play/pause do not work. The videos is broken until you reload the player. You can only skip to buffered parts of the video.

Expected behavior

The player should load the video correctly, as it does when the file is generated with ffmpeg <= 4.2.2

I have tested multiple versions of ffmpeg (4.3, 4.4, 5.0, etc) and i can reproduce the issue with every version > 4.2.2. The last working version for this setup is 4.2.2. I have also tested multiple videos from different sources.

It is irrelevant which version of ffmpeg you use to create the 480p and 720p files, only the last step (dash manifest creation) matters.

I have already opened an issue in the dashjs repo, but they believe this is an issue with ffmpeg. https://github.com/Dash-Industry-Forum/dash.js/issues/3905

Change History (0)

Note: See TracTickets for help on using tickets.