[FFmpeg-trac] #8387(avformat:new): Anomalies with the tee muxer's transparent recovery with HLS and DASH streams
FFmpeg
trac at avcodec.org
Wed Nov 20 08:42:45 EET 2019
#8387: Anomalies with the tee muxer's transparent recovery with HLS and DASH
streams
------------------------------------+------------------------------------
Reporter: Brainiarc7 | Owner:
Type: defect | Status: new
Priority: minor | Component: avformat
Version: git-master | Resolution:
Keywords: hls dash | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
------------------------------------+------------------------------------
Comment (by stevenliu):
Replying to [ticket:8387 Brainiarc7]:
> '''Summary of the bug:'''
>
> Reproduced with this version compiled a few hours ago:
>
> {{{
> ffmpeg
> ffmpeg version N-95809-g804fce8bc2 Copyright (c) 2000-2019 the FFmpeg
developers
> built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
> configuration: --pkg-config-flags=--static --enable-static --disable-
shared --prefix=/home/brainiarc7 --bindir=/home/brainiarc7/bin --extra-
cflags=-I/home/brainiarc7/include --extra-ldflags=-L/home/brainiarc7/lib
--enable-cuda-nvcc --enable-cuvid --enable-libnpp --extra-
cflags=-I/usr/local/cuda/include/ --extra-ldflags=-L/usr/local/cuda/lib64/
--enable-nvenc --enable-libass --disable-debug --enable-libvorbis
--enable-libvpx --enable-libdrm --enable-opencl --enable-libxml2 --enable-
gpl --cpu=native --enable-opengl --enable-libfdk-aac --enable-libx264
--enable-libx265 --enable-openssl --enable-librtmp --enable-libpulse
--enable-libzvbi --enable-librav1e --enable-pic --nvccflags='-gencode
arch=compute_75,code=sm_75 -O2' --extra-libs='-lpthread -lm -lz -ldl'
--enable-nonfree
> libavutil 56. 36.100 / 56. 36.100
> libavcodec 58. 62.100 / 58. 62.100
> libavformat 58. 35.100 / 58. 35.100
> libavdevice 58. 9.101 / 58. 9.101
> libavfilter 7. 66.100 / 7. 66.100
> libswscale 5. 6.100 / 5. 6.100
> libswresample 3. 6.100 / 3. 6.100
> libpostproc 55. 6.100 / 55. 6.100
> Hyper fast Audio and Video encoder
> usage: ffmpeg [options] [[infile options] -i infile]... {[outfile
options] outfile}...
>
> Use -h to get full help or, even better, run 'man ffmpeg'
>
> }}}
>
> The tee (and fifo) muxer(s) is(/are) not able to adequately recover both
HLS and DASH streams, when explicitly configured to do so. Take a look at
the example below.
>
> '''How to reproduce:'''
> Take a look at the command below, which demonstrates a scenario of
generating multiple HLS and DASH streams from one command:
>
> {{{
> #! /bin/bash
>
HLSOPTS=':use_fifo=1:fifo_options=recovery_wait_time=1\\:attempt_recovery=1\\:restart_with_keyframe=1\\:recover_any_error=1:f=hls:hls_wrap=6:hls_time=6:hls_list_size=6:hls_segment_type=fmp4:ignore_io_errors=1'
>
DASHOPTS='use_fifo=1:fifo_options=recovery_wait_time=1\\:attempt_recovery=1\\:restart_with_keyframe=1\\:recover_any_error=1:f=dash:seg_duration=6:window_size=6:extra_window_size=0:ignore_io_errors=1'
>
>
> ffmpeg -t 3600 -nostdin -y \
> -fflags +autobsf+genpts-fastseek+igndts -vsync 1 \
> -f mpegts -fix_teletext_pts 1 -scan_all_pmts 1 -merge_pmt_versions 1
\
> -re -i 'feeds.ts' -filter_complex \
> "[i:0x100]yadif,split=6[s0][s1][s2][s3][s4][s5]; \
> [s0]scale=w=1920:h=1080,split=2[v0][v1]; \
> [s1]scale=w=1280:h=720,split=2[v2][v3]; \
> [s2]scale=w=960:h=540,format=nv12[v4]; \
> [s3]scale=w=768:h=432,split=2[v5][v6]; \
> [s4]scale=w=640:h=360[v7]; \
> [s5]scale=w=416:h=234[v8]" \
> -c:a aac -ac 2 -ar 48000 -b:a 128k \
> -b:v:0 7800k -minrate:v:0 7800k -maxrate:v:0 7800k -bufsize:v:0 7800k
-c:v:0 libx264 \
> -profile:v:0 high -preset:v:0 fast -tune:v:0 zerolatency -g:v:0 60
-bf:v:0 0 -x264opts "no-scenecut" \
> -b:v:1 6000k -minrate:v:1 6000k -maxrate:v:1 6000k -bufsize:v:1 6000k
-c:v:1 libx264 \
> -profile:v:1 high -preset:v:1 fast -tune:v:1 zerolatency -g:v:1 60
-bf:v:1 0 -x264opts "no-scenecut" \
> -b:v:2 4500k -minrate:v:2 4500k -maxrate:v:2 4500k -bufsize:v:2 4500k
-c:v:2 libx264 \
> -profile:v:2 high -preset:v:2 fast -tune:v:2 zerolatency -g:v:2 60
-bf:v:2 0 -x264opts "no-scenecut" \
> -b:v:3 3000k -minrate:v:3 3000k -maxrate:v:3 3000k -bufsize:v:3 3000k
-c:v:3 libx264 \
> -profile:v:3 main -preset:v:3 fast -tune:v:3 zerolatency -g:v:3 60
-bf:v:3 0 -x264opts "no-scenecut" \
> -b:v:4 2000k -minrate:v:4 2000k -maxrate:v:4 2000k -bufsize:v:4 2000k
-c:v:4 libx264 \
> -profile:v:4 main -preset:v:4 fast -tune:v:4 zerolatency -g:v:4 60
-bf:v:4 0 -x264opts "no-scenecut" \
> -b:v:5 1100k -minrate:v:5 1100k -maxrate:v:5 1100k -bufsize:v:5 1100k
-c:v:5 libx264 \
> -profile:v:5 main -preset:v:5 fast -tune:v:5 zerolatency -g:v:5 60
-bf:v:5 0 -x264opts "no-scenecut" \
> -b:v:6 730k -minrate:v:6 730k -maxrate:v:6 730k -bufsize:v:6 730k
-c:v:6 libx264 \
> -profile:v:6 main -preset:v:6 fast -tune:v:6 zerolatency -g:v:6 60
-bf:v:6 0 -x264opts "no-scenecut" \
> -b:v:7 365k -minrate:v:7 365k -maxrate:v:7 365k -bufsize:v:7 365k
-c:v:7 libx264 \
> -profile:v:7 baseline -preset:v:7 fast -tune:v:7 zerolatency -g:v:7 60
-bf:v:7 0 -x264opts "no-scenecut" \
> -b:v:8 145k -minrate:v:8 145k -maxrate:v:8 145k -bufsize:v:8 145k
-c:v:8 libx264 \
> -profile:v:8 baseline -preset:v:8 fast -tune:v:8 zerolatency -g:v:8 60
-bf:v:8 0 -x264opts "no-scenecut" \
> -map "[v0]" -map "[v1]" -map "[v2]" -map "[v3]" -map "[v4]" -map
"[v5]" -map "[v6]" -map "[v7]" -map "[v8]" -map 'i:0x101' \
> -flags +global_header+cgop \
> -max_muxing_queue_size 90000 -f tee \
>
"[select=\'v:0,a\'$HLSOPTS]'/home/brainiarc7/Desktop/src/test/H264/Gear-9/manifest.m3u8'|
\
>
[select=\'v:1,a\'$HLSOPTS]'/home/brainiarc7/Desktop/src/test/H264/Gear-8/manifest.m3u8'|
\
>
[select=\'v:2,a\'$HLSOPTS]'/home/brainiarc7/Desktop/src/test/H264/Gear-7/manifest.m3u8'|
\
>
[select=\'v:3,a\'$HLSOPTS]'/home/brainiarc7/Desktop/src/test/H264/Gear-6/manifest.m3u8'|
\
>
[select=\'v:4,a\'$HLSOPTS]'/home/brainiarc7/Desktop/src/test/H264/Gear-5/manifest.m3u8'|
\
>
[select=\'v:5,a\'$HLSOPTS]'/home/brainiarc7/Desktop/src/test/H264/Gear-4/manifest.m3u8'|
\
>
[select=\'v:6,a\'$HLSOPTS]'/home/brainiarc7/Desktop/src/test/H264/Gear-3/manifest.m3u8'|
\
>
[select=\'v:7,a\'$HLSOPTS]'/home/brainiarc7/Desktop/src/test/H264/Gear-2/manifest.m3u8'|
\
>
[select=\'v:8,a\'$HLSOPTS]'/home/brainiarc7/Desktop/src/test/H264/Gear-1/manifest.m3u8'|
\
> [$DASHOPTS:adaptation_sets='id=0,streams=v
id=1,streams=a']'/home/brainiarc7/Desktop/src/test/DASH/manifest.mpd'"
> }}}
>
>
> To simulate failure, one can either rename or delete a sub-directory to
which the tee muxer's fifo slaves are writing packets to.
>
> Here are the observations:
>
> '''(a). With HLS:'''
>
> i. Rename operations will recover successfully once the original target
directory name is restored. This works flawlessly, and the content therein
is playable.
>
> ii. Target directory deletion and recreation (which simulates a failure
scenario with network file systems such as NFS, etc) results in a case
whereby the underlying HLS muxer recovers successfully, BUT does not
restore the init.mp4 file when the segment format is set to mp4.
>
> Here's a snapshot of such a scenario, where the target directory is
deleted and recreated:
>
>
> {{{
> pwd
> /home/brainiarc7/Desktop/src/test/H264/Gear-3
> brainiarc7 at lucifer:~/Desktop/src/test/H264/Gear-3$ ls -al
> total 3796
> drwxr-xr-x 2 brainiarc7 brainiarc7 4096 Nov 20 01:04 .
> drwxr-xr-x 12 brainiarc7 brainiarc7 4096 Nov 19 22:56 ..
> -rw-r--r-- 1 brainiarc7 brainiarc7 1309 Nov 20 00:52 init.mp4
> -rw-r--r-- 1 brainiarc7 brainiarc7 627855 Nov 20 01:03 manifest0.m4s
> -rw-r--r-- 1 brainiarc7 brainiarc7 624993 Nov 20 01:04 manifest1.m4s
> -rw-r--r-- 1 brainiarc7 brainiarc7 685980 Nov 20 01:03 manifest2.m4s
> -rw-r--r-- 1 brainiarc7 brainiarc7 645685 Nov 20 01:03 manifest3.m4s
> -rw-r--r-- 1 brainiarc7 brainiarc7 583939 Nov 20 01:03 manifest4.m4s
> -rw-r--r-- 1 brainiarc7 brainiarc7 690322 Nov 20 01:03 manifest5.m4s
> -rw-r--r-- 1 brainiarc7 brainiarc7 292 Nov 20 01:04 manifest.m3u8
>
> }}}
>
> Now we delete that directory, recreate it and run ls-al:
>
>
> {{{
> brainiarc7 at lucifer:~/Desktop/src/test/H264/Gear-3$ cd ..
> brainiarc7 at lucifer:~/Desktop/src/test/H264$ rm -fr Gear-3/
> brainiarc7 at lucifer:~/Desktop/src/test/H264$ mkdir -p Gear-3
are this operations do in the other terminal when the ffmpeg is running
status?
> brainiarc7 at lucifer:~/Desktop/src/test/H264$ cd Gear-3/
> brainiarc7 at lucifer:~/Desktop/src/test/H264/Gear-3$ ls -al
> total 3700
> drwxr-xr-x 2 brainiarc7 brainiarc7 4096 Nov 20 01:06 .
> drwxr-xr-x 12 brainiarc7 brainiarc7 4096 Nov 20 01:05 ..
> -rw-r--r-- 1 brainiarc7 brainiarc7 692562 Nov 20 01:05 manifest0.m4s
> -rw-r--r-- 1 brainiarc7 brainiarc7 619051 Nov 20 01:06 manifest1.m4s
> -rw-r--r-- 1 brainiarc7 brainiarc7 667125 Nov 20 01:05 manifest2.m4s
> -rw-r--r-- 1 brainiarc7 brainiarc7 645877 Nov 20 01:05 manifest3.m4s
> -rw-r--r-- 1 brainiarc7 brainiarc7 516622 Nov 20 01:05 manifest4.m4s
> -rw-r--r-- 1 brainiarc7 brainiarc7 619269 Nov 20 01:05 manifest5.m4s
> -rw-r--r-- 1 brainiarc7 brainiarc7 292 Nov 20 01:06 manifest.m3u8
>
> }}}
>
> Despite the underlying hls muxer recovering, see that the init.mp4 was
not recreated.
> The content therein is therefore rendered unusable.
>
> From mpv, we get:
>
> {{{
> brainiarc7 at lucifer:~/Desktop/src/test$ cd H264/Gear-3/
> brainiarc7 at lucifer:~/Desktop/src/test/H264/Gear-3$ ls
> manifest0.m4s manifest1.m4s manifest2.m4s manifest3.m4s
manifest4.m4s manifest5.m4s manifest.m3u8
> brainiarc7 at lucifer:~/Desktop/src/test/H264/Gear-3$ mpv manifest.m3u8
> [ffmpeg/demuxer] hls: Failed to open an initialization section in
playlist 0
> [ffmpeg/demuxer] hls: Error when loading first segment 'manifest3.m4s'
> [lavf] avformat_open_input() failed
> [lavf] Leaking 1 nested connections (FFmpeg bug).
>
> Playing: manifest3.m4s
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 1
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 2
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
trex (id 1)
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 0
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: trun track id unknown, no tfhd
was found
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: error reading header
> [lavf] avformat_open_input() failed
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 1
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 2
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
trex (id 1)
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 0
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: trun track id unknown, no tfhd
was found
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: error reading header
> [lavf] avformat_open_input() failed
> Failed to recognize file format.
>
> Playing: manifest4.m4s
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 1
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 2
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
trex (id 1)
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 0
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: trun track id unknown, no tfhd
was found
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: error reading header
> [lavf] avformat_open_input() failed
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 1
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 2
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
trex (id 1)
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 0
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: trun track id unknown, no tfhd
was found
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: error reading header
> [lavf] avformat_open_input() failed
> Failed to recognize file format.
>
> Playing: manifest5.m4s
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 1
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 2
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
trex (id 1)
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 0
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: trun track id unknown, no tfhd
was found
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: error reading header
> [lavf] avformat_open_input() failed
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 1
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 2
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
trex (id 1)
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 0
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: trun track id unknown, no tfhd
was found
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: error reading header
> [lavf] avformat_open_input() failed
> Failed to recognize file format.
>
> Playing: manifest0.m4s
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 1
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 2
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
trex (id 1)
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 0
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: trun track id unknown, no tfhd
was found
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: error reading header
> [lavf] avformat_open_input() failed
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 1
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 2
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
trex (id 1)
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 0
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: trun track id unknown, no tfhd
was found
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: error reading header
> [lavf] avformat_open_input() failed
> Failed to recognize file format.
>
> Playing: manifest1.m4s
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 1
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 2
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
trex (id 1)
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 0
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: trun track id unknown, no tfhd
was found
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: error reading header
> [lavf] avformat_open_input() failed
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 1
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 2
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
trex (id 1)
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 0
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: trun track id unknown, no tfhd
was found
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: error reading header
> [lavf] avformat_open_input() failed
> Failed to recognize file format.
>
> Playing: manifest2.m4s
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 1
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 2
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
trex (id 1)
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 0
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: trun track id unknown, no tfhd
was found
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: error reading header
> [lavf] avformat_open_input() failed
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 1
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 2
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
trex (id 1)
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: could not find corresponding
track id 0
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: trun track id unknown, no tfhd
was found
> [ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: error reading header
> [lavf] avformat_open_input() failed
> Failed to recognize file format.
>
>
> Exiting... (Some errors happened)
>
> }}}
>
> And with ffplay:
>
> {{{
> ffplay manifest.m3u8
> ffplay version N-95809-g804fce8bc2 Copyright (c) 2003-2019 the FFmpeg
developers
> built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
> configuration: --pkg-config-flags=--static --enable-static --disable-
shared --prefix=/home/brainiarc7 --bindir=/home/brainiarc7/bin --extra-
cflags=-I/home/brainiarc7/include --extra-ldflags=-L/home/brainiarc7/lib
--enable-cuda-nvcc --enable-cuvid --enable-libnpp --extra-
cflags=-I/usr/local/cuda/include/ --extra-ldflags=-L/usr/local/cuda/lib64/
--enable-nvenc --enable-libass --disable-debug --enable-libvorbis
--enable-libvpx --enable-libdrm --enable-opencl --enable-libxml2 --enable-
gpl --cpu=native --enable-opengl --enable-libfdk-aac --enable-libx264
--enable-libx265 --enable-openssl --enable-librtmp --enable-libpulse
--enable-libzvbi --enable-librav1e --enable-pic --nvccflags='-gencode
arch=compute_75,code=sm_75 -O2' --extra-libs='-lpthread -lm -lz -ldl'
--enable-nonfree
> libavutil 56. 36.100 / 56. 36.100
> libavcodec 58. 62.100 / 58. 62.100
> libavformat 58. 35.100 / 58. 35.100
> libavdevice 58. 9.101 / 58. 9.101
> libavfilter 7. 66.100 / 7. 66.100
> libswscale 5. 6.100 / 5. 6.100
> libswresample 3. 6.100 / 3. 6.100
> libpostproc 55. 6.100 / 55. 6.100
> [hls @ 0x7f3528000b80] Skip ('#EXT-X-VERSION:7')
> [hls @ 0x7f3528000b80] Opening 'init.mp4' for reading
> [hls @ 0x7f3528000b80] Failed to open an initialization section in
playlist 0
> [hls @ 0x7f3528000b80] Error when loading first segment 'manifest3.m4s'
> manifest.m3u8: No such file or directory
>
> }}}
>
> '''(b). On to DASH:'''
>
> If we rename OR delete the target directories to which the underlying
DASH muxer is writing to with the aforementioned muxer options, the tee
muxer slaves (fifo'd) claims that the recovery is successful, BUT with the
following spurious error in the console:
>
>
> {{{
> [fifo @ 0x55e25c9661c0] Recovery successful
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream1-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream2-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream3-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream4-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream5-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream6-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream7-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream8-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream9-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Application provided invalid, non monotonically
increasing dts to muxer in stream 0: 20977892936 >= 20957937
> [dash @ 0x55e25c970280] Opening
'/home/brainiarc7/Desktop/src/test/DASH/manifest.mpd.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream0.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream1.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream2.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream3.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream4.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream5.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream6.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream7.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream8.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream9.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream0-00001.m4s.tmp' for writing
> [fifo @ 0x55e25c9661c0] Recovery successful
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream1-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream2-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream3-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream4-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream5-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream6-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream7-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream8-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream9-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Application provided invalid, non monotonically
increasing dts to muxer in stream 0: 20978894937 >= 20958938
> [dash @ 0x55e25c970280] Opening
'/home/brainiarc7/Desktop/src/test/DASH/manifest.mpd.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream0.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream1.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream2.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream3.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream4.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream5.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream6.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream7.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream8.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream9.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream0-00001.m4s.tmp' for writing
> [fifo @ 0x55e25c9661c0] Recovery successful
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream1-00001.m4s.tmp' for writing
> ^C[dash @ 0x55e25c970280] Opening
'/home/brainiarc7/Desktop/src/test/DASH/chunk-stream2-00001.m4s.tmp' for
writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream3-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream4-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream5-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream6-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream7-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream8-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream9-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Application provided invalid, non monotonically
increasing dts to muxer in stream 0: 20979896938 >= 20959939
> [dash @ 0x55e25c970280] Opening
'/home/brainiarc7/Desktop/src/test/DASH/manifest.mpd.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream0.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream1.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream2.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream3.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream4.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream5.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream6.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream7.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream8.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream9.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream0-00001.m4s.tmp' for writing
> [fifo @ 0x55e25c9661c0] Recovery successful
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream1-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream2-00001.m4s.tmp' for writing
> [hls @ 0x55e25c912000] Opening
'/home/brainiarc7/Desktop/src/test/H264/Gear-9/manifest2.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream3-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream4-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream5-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream6-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream7-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream8-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream9-00001.m4s.tmp' for writing
> [dash @ 0x55e25c970280] Application provided invalid, non monotonically
increasing dts to muxer in stream 0: 20980898939 >= 20960940
> [dash @ 0x55e25c970280] Opening
'/home/brainiarc7/Desktop/src/test/DASH/manifest.mpd.tmp' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream0.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream1.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream2.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream3.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream4.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream5.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream6.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream7.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream8.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/init-stream9.m4s' for writing
> [dash @ 0x55e25c970280] Opening '/home/brainiarc7/Desktop/src/test/DASH
/chunk-stream0-00001.m4s.tmp' for writing
> [fifo @ 0x55e25c9661c0] Recovery successful
> }}}
>
>
> Which is then repeated non-stop: "Application provided invalid, non
monotonically increasing dts to muxer in stream 0"
>
> The content rendered there-in, even after the directory is renamed or
recreated with the original name is definitely unplayable. Both ffprobe
and mpv die on attempting playback:
>
> {{{
> ffplay manifest.mpd
> ffplay version N-95809-g804fce8bc2 Copyright (c) 2003-2019 the FFmpeg
developers
> built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
> configuration: --pkg-config-flags=--static --enable-static --disable-
shared --prefix=/home/brainiarc7 --bindir=/home/brainiarc7/bin --extra-
cflags=-I/home/brainiarc7/include --extra-ldflags=-L/home/brainiarc7/lib
--enable-cuda-nvcc --enable-cuvid --enable-libnpp --extra-
cflags=-I/usr/local/cuda/include/ --extra-ldflags=-L/usr/local/cuda/lib64/
--enable-nvenc --enable-libass --disable-debug --enable-libvorbis
--enable-libvpx --enable-libdrm --enable-opencl --enable-libxml2 --enable-
gpl --cpu=native --enable-opengl --enable-libfdk-aac --enable-libx264
--enable-libx265 --enable-openssl --enable-librtmp --enable-libpulse
--enable-libzvbi --enable-librav1e --enable-pic --nvccflags='-gencode
arch=compute_75,code=sm_75 -O2' --extra-libs='-lpthread -lm -lz -ldl'
--enable-nonfree
> libavutil 56. 36.100 / 56. 36.100
> libavcodec 58. 62.100 / 58. 62.100
> libavformat 58. 35.100 / 58. 35.100
> libavdevice 58. 9.101 / 58. 9.101
> libavfilter 7. 66.100 / 7. 66.100
> libswscale 5. 6.100 / 5. 6.100
> libswresample 3. 6.100 / 3. 6.100
> libpostproc 55. 6.100 / 55. 6.100
> [dash @ 0x7fb1dc000b80] decoding for stream 0 failed= 0B f=0/0
> [dash @ 0x7fb1dc000b80] decoding for stream 1 failed
> [dash @ 0x7fb1dc000b80] decoding for stream 2 failed
> [dash @ 0x7fb1dc000b80] decoding for stream 3 failed
> [dash @ 0x7fb1dc000b80] decoding for stream 4 failed
> [dash @ 0x7fb1dc000b80] decoding for stream 5 failed
> [dash @ 0x7fb1dc000b80] decoding for stream 6 failed
> [dash @ 0x7fb1dc000b80] decoding for stream 7 failed
> [dash @ 0x7fb1dc000b80] decoding for stream 8 failed
> Input #0, dash, from 'manifest.mpd':
> Duration: 00:00:33.00, start: 1397.396000, bitrate: 1 kb/s
> Program 0
> Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1920x1080 [SAR 1:1 DAR 16:9], Closed Captions, 29.97 tbr, 30k tbn, 59.94
tbc
> Metadata:
> variant_bitrate : 7800000
> id : 0
> Stream #0:1: Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1920x1080 [SAR 1:1 DAR 16:9], Closed Captions, 0 kb/s, 29.97 tbr, 30k tbn,
59.94 tbc
> Metadata:
> variant_bitrate : 6000000
> id : 1
> Stream #0:2: Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1280x720 [SAR 1:1 DAR 16:9], Closed Captions, 0 kb/s, 29.97 tbr, 30k tbn,
59.94 tbc
> Metadata:
> variant_bitrate : 4500000
> id : 2
> Stream #0:3: Video: h264 (Main) (avc1 / 0x31637661), yuv420p,
1280x720 [SAR 1:1 DAR 16:9], Closed Captions, 0 kb/s, 29.97 tbr, 30k tbn,
59.94 tbc
> Metadata:
> variant_bitrate : 3000000
> id : 3
> Stream #0:4: Video: h264 (Main) (avc1 / 0x31637661), yuv420p,
960x540 [SAR 1:1 DAR 16:9], Closed Captions, 0 kb/s, 29.97 tbr, 30k tbn,
59.94 tbc
> Metadata:
> variant_bitrate : 2000000
> id : 4
> Stream #0:5: Video: h264 (Main) (avc1 / 0x31637661), yuv420p,
768x432 [SAR 1:1 DAR 16:9], Closed Captions, 0 kb/s, 29.97 tbr, 30k tbn,
59.94 tbc
> Metadata:
> variant_bitrate : 1100000
> id : 5
> Stream #0:6: Video: h264 (Main) (avc1 / 0x31637661), yuv420p,
768x432 [SAR 1:1 DAR 16:9], Closed Captions, 0 kb/s, 29.97 tbr, 30k tbn,
59.94 tbc
> Metadata:
> variant_bitrate : 730000
> id : 6
> Stream #0:7: Video: h264 (Constrained Baseline) (avc1 / 0x31637661),
yuv420p, 640x360 [SAR 1:1 DAR 16:9], Closed Captions, 0 kb/s, 29.97 tbr,
30k tbn, 59.94 tbc
> Metadata:
> variant_bitrate : 365000
> id : 7
> Stream #0:8: Video: h264 (Constrained Baseline) (avc1 / 0x31637661),
yuv420p, 416x234 [SAR 1:1 DAR 16:9], Closed Captions, 0 kb/s, 29.97 tbr,
30k tbn, 59.94 tbc
> Metadata:
> variant_bitrate : 145000
> id : 8
> Stream #0:9: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo,
fltp, 0 kb/s
> Metadata:
> variant_bitrate : 128000
> id : 9
> [dash @ 0x7fb1dc000b80] No longer receiving stream_index 0
> [dash @ 0x7fb1dc000b80] No longer receiving stream_index 2
> [dash @ 0x7fb1dc000b80] No longer receiving stream_index 3
> [dash @ 0x7fb1dc000b80] No longer receiving stream_index 4
> [dash @ 0x7fb1dc000b80] No longer receiving stream_index 5
> [dash @ 0x7fb1dc000b80] No longer receiving stream_index 6
> [dash @ 0x7fb1dc000b80] No longer receiving stream_index 7
> [dash @ 0x7fb1dc000b80] No longer receiving stream_index 8
> }}}
>
> And with mpv:
>
> {{{
> mpv manifest.mpd
> (+) Video --vid=1 'bitrate 7800000' (h264 1920x1080)
> Video --vid=2 'bitrate 6000000' (h264 1920x1080)
> Video --vid=3 'bitrate 4500000' (h264 1280x720)
> Video --vid=4 'bitrate 3000000' (h264 1280x720)
> Video --vid=5 'bitrate 2000000' (h264 960x540)
> Video --vid=6 'bitrate 1100000' (h264 768x432)
> Video --vid=7 'bitrate 730000' (h264 768x432)
> Video --vid=8 'bitrate 365000' (h264 640x360)
> Video --vid=9 'bitrate 145000' (h264 416x234)
> (+) Audio --aid=1 'bitrate 128000' (aac 2ch 48000Hz)
> AO: [pulse] 48000Hz stereo 2ch float
>
>
> Exiting... (End of file)
>
> }}}
>
> '''In conclusion:''' The tee (and fifo muxer combination) cannot
transparently recover HLS (with mp4 as segment format) and DASH streams,
as documented above.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8387#comment:2>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list