I'm trying to use FFmpeg to simulate a "live" DASH-LL from a file.  However, 
the audio "m4s" files and the video "m4s" files are not being created at the 
same rate.

The video files lag significantly behind the audio (i.e., they don't exist).  
This causes issues with the player since it tries to fetch both audio and video 
segments with a given index. e.g. it tries to fetch chunk-stream0-018.m4s and 
chunk-stream1-018.m4s but the stream0 chunk (video) hasn't yet been created by 
FFmpeg causing the player to give a 404 error.

For example, encoding just 60 seconds ends up with these files in the web root 
folder:

init-stream0.m4s         
init-stream1.m4s  
chunk-stream0-00001.m4s  chunk-stream1-00019.m4s  
chunk-stream0-00002.m4s  chunk-stream1-00020.m4s  
chunk-stream0-00003.m4s  chunk-stream1-00021.m4s  
chunk-stream0-00004.m4s  chunk-stream1-00022.m4s  
chunk-stream0-00005.m4s  chunk-stream1-00023.m4s  
chunk-stream0-00006.m4s  chunk-stream1-00024.m4s  
chunk-stream0-00007.m4s  chunk-stream1-00025.m4s  
chunk-stream0-00008.m4s  chunk-stream1-00026.m4s  
chunk-stream0-00009.m4s  chunk-stream1-00027.m4s  
chunk-stream0-00010.m4s  chunk-stream1-00028.m4s  
chunk-stream0-00011.m4s  chunk-stream1-00029.m4s  
chunk-stream0-00012.m4s  chunk-stream1-00030.m4s  
                         chunk-stream1-00031.m4s  
                         
So the player requests chunk-stream0-29.m4s which gives a 404 error because it 
doesn't exist yet.

The command line is:

ffmpeg -loglevel info -re -i 
/mnt/swdevel/TestStreams/H264/ThreeHourLongMovie.mp4 -t 60 \
-c:v libx264 -x264-params keyint=120:scenecut=0 -b:v 1M -c:a copy \
-f dash -dash_segment_type mp4 \
 -seg_duration 2 \
 -target_latency 3 \
 -frag_type duration \
 -frag_duration 0.2 \
 -window_size 10 \
 -extra_window_size 3 \
 -streaming 1 \
 -ldash 1 \
 -use_template 1 \
 -use_timeline 0 \
 -write_prft 1 \
 -fflags +nobuffer+flush_packets \
 -format_options "movflags=+cmaf" \
 -utc_timing_url "/pelican/testPlayers/time.php" \
 master.mpd

The <SegmentTemplate> in the MPD file shows the same timescale and duration for 
both stream0 and stream1:

                <SegmentTemplate timescale="1000000" duration="2000000" 
availabilityTimeOffset="1.800" 
initialization="init-stream$RepresentationID$.m4s" 
media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startNumber="1">

Both dash.js and shaka player and the stream doesn't play.  I've also tried 
using a VLSI hardware encoder instead of libx264 but same result so the issue 
is the the mixer (??)

Any suggestions on how fix this?

Danny

OS: Centos 8

ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 8 (GCC)
  configuration: --extra-ldflags='-L/mnt/swdevel/Torque/lib3p64 -L/lib' 
--extra-cflags='-I/mnt/swdevel/Torque/include 
-I/mnt/swdevel/Torque/ext/extinclude/ -I/include' --disable-static 
--enable-shared --disable-cuda --disable-cuvid --disable-nvenc --enable-libx264 
--enable-gpl --enable-libfreetype --enable-libfontconfig --enable-libv4l2 
--enable-indev=alsa --enable-indev=v4l2 --bindir=/mnt/swdevel/Torque/bin64 
--datadir=/mnt/swdevel/Torque/ext/ffmpeg-build 
--docdir=/mnt/swdevel/Torque/ext/doc --libdir=/mnt/swdevel/Torque/lib3p64 
--shlibdir=/mnt/swdevel/Torque/lib3p64 
--incdir=/mnt/swdevel/Torque/ext/extinclude/ffmpeg 
--mandir=/mnt/swdevel/Torque/ext/ffmpeg-build64 --enable-libxcoder 
--disable-doc --enable-x86asm --extra-ldflags=-lm --enable-pthreads 
--extra-libs=-lpthread --disable-debug
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to