[FFmpeg-user] Broken video in rtmp stream to Wowza using tee pseudo-muxer

Erwin Eggenberger eeggenberger+ffmpeg at techcast.com
Thu Feb 1 15:02:56 EET 2018


Oops! Forgot to remove the credentials for the rtmp stream from the
command output. Already changed it ;-)

Am 01.02.2018 um 13:52 schrieb Erwin Eggenberger:
> Hi Carl Eugen,
> 
> I finally had the chance to look into this again. Here's the command and
> its output that isn't working:
> 
> ffmpeg -y -v info -f x11grab -draw_mouse 0 -r 25 -s 1280x720 \
>  -thread_queue_size 4096 -i :0.0+0,0 -f alsa -thread_queue_size 4096 \
>  -i hw:0,1,0 -acodec aac -strict -2 -ar 44100 -c:v libx264 -preset
> veryfast \
>  -maxrate 2976k -bufsize 5952k -pix_fmt yuv420p -r 25 -crf 25 -g 50 \
>  -tune zerolatency \
>  -f tee -map 0:v -map 1:a \
>  "[f=flv]rtmp://user:password@wowza-server.tld:1935/live/tcfw_demo_db728"
> 
> Output:
> ffmpeg version N-89907-g293f24b Copyright (c) 2000-2018 the FFmpeg
> developers
>   built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.5) 20160609
>   configuration: --prefix=/home/eeggenberger/ffmpeg_build
> --pkg-config-flags=--static
> --extra-cflags=-I/home/eeggenberger/ffmpeg_build/include
> --extra-ldflags=-L/home/eeggenberger/ffmpeg_build/lib
> --extra-libs='-lpthread -lm' --bindir=/home/eeggenberger/bin
> --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype
> --enable-libmp3lame --enable-libopus --enable-libtheora
> --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265
> --enable-nonfree
>   libavutil      56.  7.100 / 56.  7.100
>   libavcodec     58.  9.100 / 58.  9.100
>   libavformat    58.  6.100 / 58.  6.100
>   libavdevice    58.  0.101 / 58.  0.101
>   libavfilter     7. 11.101 /  7. 11.101
>   libswscale      5.  0.101 /  5.  0.101
>   libswresample   3.  0.101 /  3.  0.101
>   libpostproc    55.  0.100 / 55.  0.100
> [x11grab @ 0x35aaf80] Stream #0: not enough frames to estimate rate;
> consider increasing probesize
> Input #0, x11grab, from ':0.0+0,0':
>   Duration: N/A, start: 1517487900.599421, bitrate: N/A
>     Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1280x720, 25
> fps, 1000k tbr, 1000k tbn, 1000k tbc
> Guessed Channel Layout for Input Stream #1.0 : stereo
> Input #1, alsa, from 'hw:0,1,0':
>   Duration: N/A, start: 1517487900.643670, bitrate: 1536 kb/s
>     Stream #1:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
> Stream mapping:
>   Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
>   Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (native))
> Press [q] to stop, [?] for help
> [libx264 @ 0x35c84c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
> AVX FMA3 BMI2 AVX2
> [libx264 @ 0x35c84c0] profile High, level 3.1
> [rtmp @ 0x3fda200] Ignoring unsupported var reason
> Output #0, tee, to
> '[f=flv]rtmp://techcast:oleander@cdn.techcast.com:1935/live/tcfw_demo_db728':
>   Metadata:
>     encoder         : Lavf58.6.100
>     Stream #0:0: Video: h264 (libx264), yuv420p(progressive), 1280x720,
> q=-1--1, 25 fps, 25 tbn, 25 tbc
>     Metadata:
>       encoder         : Lavc58.9.100 libx264
>     Side data:
>       cpb: bitrate max/min/avg: 2976000/0/0 buffer size: 5952000
> vbv_delay: -1
>     Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 128 kb/s
>     Metadata:
>       encoder         : Lavc58.9.100 aac
> frame=   12 fps=0.0 q=24.0 size=N/A time=00:00:00.48 bitrate=N/A
> speed=0.943x
> frame=   25 fps= 25 q=23.0 size=N/A time=00:00:01.00 bitrate=N/A
> speed=0.987x
> frame=   37 fps= 24 q=23.0 size=N/A time=00:00:01.48 bitrate=N/A
> speed=0.973x
> ... similar messages repeated ...
> frame= 2818 fps= 25 q=23.0 size=N/A time=00:01:52.72 bitrate=N/A speed=
>  1x
> frame= 2830 fps= 25 q=23.0 size=N/A time=00:01:53.20 bitrate=N/A speed=
>  1x
> frame= 2843 fps= 25 q=23.0 size=N/A time=00:01:53.72 bitrate=N/A speed=
>  1x
> [flv @ 0x3fd7f00] Failed to update header with correct duration.
> [flv @ 0x3fd7f00] Failed to update header with correct filesize.
> frame= 2855 fps= 25 q=23.0 Lsize=N/A time=00:01:54.20 bitrate=N/A speed=
>   1x
> video:9655kB audio:1790kB subtitle:0kB other streams:0kB global
> headers:0kB muxing overhead: unknown
> [libx264 @ 0x35c84c0] frame I:58    Avg QP:17.26  size: 48561
> [libx264 @ 0x35c84c0] frame P:2797  Avg QP:18.06  size:  2528
> [libx264 @ 0x35c84c0] mb I  I16..4: 24.2% 40.0% 35.9%
> [libx264 @ 0x35c84c0] mb P  I16..4:  2.5%  0.2%  0.0%  P16..4: 23.1%
> 2.4%  0.5%  0.0%  0.0%    skip:71.2%
> [libx264 @ 0x35c84c0] 8x8 transform intra:21.9% inter:16.9%
> [libx264 @ 0x35c84c0] coded y,uvDC,uvAC intra: 37.3% 79.3% 43.8% inter:
> 0.6% 21.5% 0.5%
> [libx264 @ 0x35c84c0] i16 v,h,dc,p: 50% 24% 21%  6%
> [libx264 @ 0x35c84c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 11% 22% 22%  6%  6%
>  2% 16%  5% 10%
> [libx264 @ 0x35c84c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 24% 12%  6%  8%
>  4% 19%  5%  8%
> [libx264 @ 0x35c84c0] i8c dc,h,v,p: 54% 23% 19%  5%
> [libx264 @ 0x35c84c0] Weighted P-Frames: Y:0.0% UV:0.0%
> [libx264 @ 0x35c84c0] kb/s:692.58
> [aac @ 0x35c9780] Qavg: 247.443
> Exiting normally, received signal 2.
> 
> For comparison, this is the working command without tee:
> 
> ffmpeg -y -v info -f x11grab -draw_mouse 0 -r 25 -s 1280x720 \
>  -thread_queue_size 4096 -i :0.0+0,0 -f alsa -thread_queue_size 4096 \
>  -i hw:0,1,0 -acodec aac -strict -2 -ar 44100 -c:v libx264 -preset
> veryfast \
>  -maxrate 2976k -bufsize 5952k -pix_fmt yuv420p -r 25 -crf 25 -g 50 \
>  -tune zerolatency \
>  -f flv rtmp://user:password@wowza-server.tld:1935/live/tcfw_demo_db728
> 
> Output:
> ffmpeg version N-89907-g293f24b Copyright (c) 2000-2018 the FFmpeg
> developers
>   built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.5) 20160609
>   configuration: --prefix=/home/eeggenberger/ffmpeg_build
> --pkg-config-flags=--static
> --extra-cflags=-I/home/eeggenberger/ffmpeg_build/include
> --extra-ldflags=-L/home/eeggenberger/ffmpeg_build/lib
> --extra-libs='-lpthread -lm' --bindir=/home/eeggenberger/bin
> --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype
> --enable-libmp3lame --enable-libopus --enable-libtheora
> --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265
> --enable-nonfree
>   libavutil      56.  7.100 / 56.  7.100
>   libavcodec     58.  9.100 / 58.  9.100
>   libavformat    58.  6.100 / 58.  6.100
>   libavdevice    58.  0.101 / 58.  0.101
>   libavfilter     7. 11.101 /  7. 11.101
>   libswscale      5.  0.101 /  5.  0.101
>   libswresample   3.  0.101 /  3.  0.101
>   libpostproc    55.  0.100 / 55.  0.100
> [x11grab @ 0x3ffbf40] Stream #0: not enough frames to estimate rate;
> consider increasing probesize
> Input #0, x11grab, from ':0.0+0,0':
>   Duration: N/A, start: 1517487760.405432, bitrate: N/A
>     Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1280x720, 25
> fps, 1000k tbr, 1000k tbn, 1000k tbc
> Guessed Channel Layout for Input Stream #1.0 : stereo
> Input #1, alsa, from 'hw:0,1,0':
>   Duration: N/A, start: 1517487760.451644, bitrate: 1536 kb/s
>     Stream #1:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
> [rtmp @ 0x401d4c0] Ignoring unsupported var reason
> Stream mapping:
>   Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
>   Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (native))
> Press [q] to stop, [?] for help
> [libx264 @ 0x4019740] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
> AVX FMA3 BMI2 AVX2
> [libx264 @ 0x4019740] profile High, level 3.1
> [libx264 @ 0x4019740] 264 - core 155 - H.264/MPEG-4 AVC codec - Copyleft
> 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=1
> deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00
> mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0
> deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=4
> lookahead_threads=4 sliced_threads=1 slices=4 nr=0 decimate=1
> interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=1
> keyint=50 keyint_min=5 scenecut=40 intra_refresh=0 rc_lookahead=0 rc=crf
> mbtree=0 crf=25.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=2976
> vbv_bufsize=5952 crf_max=0.0 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
> Output #0, flv, to
> 'rtmp://techcast:oleander@cdn.techcast.com:1935/live/tcfw_demo_db728':
>   Metadata:
>     encoder         : Lavf58.6.100
>     Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007),
> yuv420p(progressive), 1280x720, q=-1--1, 25 fps, 1k tbn, 25 tbc
>     Metadata:
>       encoder         : Lavc58.9.100 libx264
>     Side data:
>       cpb: bitrate max/min/avg: 2976000/0/0 buffer size: 5952000
> vbv_delay: -1
>     Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz,
> stereo, fltp, 128 kb/s
>     Metadata:
>       encoder         : Lavc58.9.100 aac
> frame=   18 fps=0.0 q=24.0 size=      98kB time=00:00:00.69
> bitrate=1155.1kbits/s speed=1.37x
> frame=   31 fps= 31 q=22.0 size=     130kB time=00:00:01.21 bitrate=
> 882.0kbits/s speed=1.19x
> frame=   43 fps= 28 q=21.0 size=     160kB time=00:00:01.72 bitrate=
> 762.1kbits/s speed=1.13x
> frame=   56 fps= 28 q=23.0 size=     232kB time=00:00:02.20 bitrate=
> 859.9kbits/s speed=1.09x
> ... similar messages repeated ...
> frame= 1294 fps= 25 q=21.0 size=    4190kB time=00:00:51.73 bitrate=
> 663.5kbits/s speed=   1x
> frame= 1307 fps= 25 q=23.0 size=    4266kB time=00:00:52.24 bitrate=
> 668.9kbits/s speed=   1x
> frame= 1320 fps= 25 q=23.0 size=    4299kB time=00:00:52.76 bitrate=
> 667.5kbits/s speed=   1x
> [flv @ 0x4017780] Failed to update header with correct duration.
> [flv @ 0x4017780] Failed to update header with correct filesize.
> frame= 1322 fps= 25 q=23.0 Lsize=    4306kB time=00:00:52.87 bitrate=
> 667.1kbits/s speed=   1x
> video:3409kB audio:829kB subtitle:0kB other streams:0kB global
> headers:0kB muxing overhead: 1.602683%
> [libx264 @ 0x4019740] frame I:27    Avg QP:16.74  size: 46784
> [libx264 @ 0x4019740] frame P:1295  Avg QP:17.30  size:  1720
> [libx264 @ 0x4019740] mb I  I16..4: 24.8% 39.7% 35.5%
> [libx264 @ 0x4019740] mb P  I16..4:  1.6%  0.1%  0.0%  P16..4: 16.4%
> 1.5%  0.4%  0.0%  0.0%    skip:80.1%
> [libx264 @ 0x4019740] 8x8 transform intra:23.7% inter:13.0%
> [libx264 @ 0x4019740] coded y,uvDC,uvAC intra: 45.7% 75.0% 38.4% inter:
> 0.3% 14.4% 0.1%
> [libx264 @ 0x4019740] i16 v,h,dc,p: 59% 20% 16%  5%
> [libx264 @ 0x4019740] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 11% 23% 16%  7%  6%
>  2% 17%  6% 11%
> [libx264 @ 0x4019740] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 24% 12%  6%  8%
>  4% 18%  5%  8%
> [libx264 @ 0x4019740] i8c dc,h,v,p: 52% 24% 20%  5%
> [libx264 @ 0x4019740] Weighted P-Frames: Y:0.0% UV:0.0%
> [libx264 @ 0x4019740] kb/s:528.04
> [aac @ 0x401aa00] Qavg: 248.935
> Exiting normally, received signal 2.
> 
> I've already used diff to find differences in the output, but there
> isn't anything obvious. I only noticed that the line starting with "264
> - core 155 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018" doesn't show
> up in the output when I use tee. Everything else looks more or less the
> same.
> 
> Regards,
> 
> Erwin
> 
> Am 25.01.2018 um 11:21 schrieb Carl Eugen Hoyos:
>> 2018-01-24 16:36 GMT+01:00 Erwin Eggenberger <eeggenberger+ffmpeg at techcast.com>:
>>
>>> When I just upload the stream without the tee muxer, everything works as
>>> expected, but with tee I only get audio but no video. In the Wowza logs
>>> I can see errors like this:
>>> H264Utils.decodeAVCC : java.lang.ArrayIndexOutOfBoundsException
>>>
>>> Sounds to me like there's something wrong with the h.264 video. The
>>> ffmpeg command looks like this:
>>>
>>> ffmpeg -y -v info -f x11grab -draw_mouse 0 -r 25 -s 1280x720
>>> -thread_queue_size 4096 -i :0.0+0,0 -f alsa \
>>>   -thread_queue_size 4096 -i hw:0,1,0 -acodec aac -strict -2 -ar 44100
>>> -c:v libx264 -preset veryfast \
>>>   -maxrate 2976k -bufsize 5952k -pix_fmt yuv420p -r 25 -crf 25 -g 50
>>> -tune zerolatency \
>>>   -f tee -map 0:v -map 1:a
>>> "[f=flv]rtmp://user:password@servername:1935/live/test_stream"
>>
>> Please also provide the complete, uncut console output.
>>
>> Carl Eugen
>> _______________________________________________
>> ffmpeg-user mailing list
>> ffmpeg-user at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
>>
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
> 
> To unsubscribe, visit link above, or email
> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
> 


More information about the ffmpeg-user mailing list