[FFmpeg-trac] #2181(avformat:new): AVIO should provide a way to reconnect broken network streams
FFmpeg
trac at avcodec.org
Sat Feb 2 12:35:06 CET 2013
#2181: AVIO should provide a way to reconnect broken network streams
-------------------------------------+------------------------------------
Reporter: gjdfgh | Owner:
Type: enhancement | Status: new
Priority: normal | Component: avformat
Version: git-master | Resolution:
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+------------------------------------
Comment (by gjdfgh):
{{{
$ ffmpeg -i http://localhost:12004/test.mkv out.mkv
ffmpeg version 1.0.3 Copyright (c) 2000-2012 the FFmpeg developers
built on Jan 24 2013 14:52:18 with gcc 4.7 (Debian 4.7.2-5)
configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector
--param=ssp-buffer-size=4 -Wformat -Werror=format-security ' --extra-
ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-
libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-
pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-
x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb
--enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-
nonfree --disable-stripping --enable-libvpx --enable-libschroedinger
--disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg
--enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-
aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus
--libdir=/usr/lib/i386-linux-gnu --disable-vda --enable-libbluray
--enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl
--enable-libass --enable-libopus --enable-fontconfig --enable-libdc1394
--disable-altivec --disable-armv5te --disable libavutil 51. 73.101 /
51. 73.101
libavcodec 54. 59.100 / 54. 59.100
libavformat 54. 29.104 / 54. 29.104
libavdevice 54. 2.101 / 54. 2.101
libavfilter 3. 17.100 / 3. 17.100
libswscale 2. 1.101 / 2. 1.101
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, matroska,webm, from 'http://localhost:12004/test.mkv':
Metadata:
ENCODER : Lavf54.29.104
Duration: 00:01:49.12, start: 0.000000, bitrate: 7810 kb/s
Stream #0:0: Video: h264 (High), yuv420p, 640x480 [SAR 1:1 DAR 4:3],
25 fps, 25 tbr, 1k tbn, 50 tbc (default)
[libx264 @ 0x808f7a0] using SAR=1/1
[libx264 @ 0x808f7a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
[libx264 @ 0x808f7a0] profile High, level 3.0
[libx264 @ 0x808f7a0] 264 - core 129 - H.264/MPEG-4 AVC codec - Copyleft
2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=3
deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00
mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0
deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3
lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0
bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1
b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25
scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0
qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, matroska, to 'out.mkv':
Metadata:
encoder : Lavf54.29.104
Stream #0:0: Video: h264, yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=-1--1,
1k tbn, 25 tbc (default)
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> libx264)
Press [q] to stop, [?] for help
frame= 56 fps=0.0 q=28.0 size= 33kB time=00:00:00.28 bitrate=
952.7kbits/frame= 74 fps= 71 q=28.0 size= 161kB time=00:00:01.00
bitrate=1315.3kbits/frame= 91 fps= 59 q=28.0 size= 321kB
time=00:00:01.68 bitrate=1563.1kbits/frame= 108 fps= 52 q=28.0 size=
481kB time=00:00:02.36 bitrate=1668.1kbits/frame= 124 fps= 47 q=28.0
size= 641kB time=00:00:03.00 bitrate=1749.2kbits/frame= 139 fps= 45
q=28.0 size= 833kB time=00:00:03.60 bitrate=1894.5kbits/frame= 155
fps= 42 q=28.0 size= 1025kB time=00:00:04.24 bitrate=1979.5kbits/frame=
171 fps= 41 q=28.0 size= 1185kB time=00:00:04.88
bitrate=1988.5kbits/frame= 187 fps= 40 q=28.0 size= 1334kB
time=00:00:05.52 bitrate=1979.6kbits/frame= 202 fps= 39 q=28.0 size=
1526kB time=00:00:06.12 bitrate=2042.5kbits/Read error
frame= 215 fps= 31 q=18195026.0 Lsize= 2268kB time=00:00:08.52
bitrate=2181.1kbits/s
video:2266kB audio:0kB subtitle:0 global headers:0kB muxing overhead
0.092124%
[libx264 @ 0x808f7a0] frame I:1 Avg QP:20.34 size: 24459
[libx264 @ 0x808f7a0] frame P:66 Avg QP:23.09 size: 16142
[libx264 @ 0x808f7a0] frame B:148 Avg QP:30.85 size: 8312
[libx264 @ 0x808f7a0] consecutive B-frames: 0.5% 0.0% 69.8% 29.8%
[libx264 @ 0x808f7a0] mb I I16..4: 40.1% 44.1% 15.8%
[libx264 @ 0x808f7a0] mb P I16..4: 0.6% 0.1% 0.0% P16..4: 48.6% 13.3%
8.8% 0.0% 0.0% skip:28.6%
[libx264 @ 0x808f7a0] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 22.6% 4.9%
2.4% direct: 4.4% skip:65.7% L0:46.0% L1:43.9% BI:10.1%
[libx264 @ 0x808f7a0] 8x8 transform intra:34.2% inter:20.0%
[libx264 @ 0x808f7a0] coded y,uvDC,uvAC intra: 24.0% 74.4% 27.4% inter:
12.3% 25.0% 19.3%
[libx264 @ 0x808f7a0] i16 v,h,dc,p: 20% 9% 8% 63%
[libx264 @ 0x808f7a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 12% 26% 10% 13%
5% 11% 6% 3%
[libx264 @ 0x808f7a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 16% 14% 12% 10% 11%
9% 10% 10% 9%
[libx264 @ 0x808f7a0] i8c dc,h,v,p: 31% 10% 15% 44%
[libx264 @ 0x808f7a0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x808f7a0] ref P L0: 53.2% 5.3% 29.4% 12.0%
[libx264 @ 0x808f7a0] ref B L0: 67.3% 26.7% 6.0%
[libx264 @ 0x808f7a0] ref B L1: 82.5% 17.5%
[libx264 @ 0x808f7a0] kb/s:2158.20
}}}
I killed and restarted the local webserver some time into the encode
(roughly at frame 202). The time between killing and fully restarting the
server is very short (shell script that restart the server in a loop if it
exists). For my test, I tried the program webfsd (it supports seeking).
Obviously ffmpeg exits after receiving the error, instead of retrying.
Compare this to mplayer, which can transparently restart.
--
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/2181#comment:3>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list