[FFmpeg-user] Multithreaded multioutput problem

Deron deron at pagestream.org
Fri Jan 23 22:30:17 CET 2015


On 1/23/15 9:28 AM, Deron wrote:
> I would like to generate 4 different HLS (sub)streams from a single 
> DVB capture, but ffmpeg fails to keep up with more than 2. Yes, I have 
> the CPU power and I'm writing to a ram disk (or SSD, doesn't matter). 
> I have a dual tuner capture card and can generate two different HLS 
> substreams per tuner (total of 4) with plenty of CPU left to burn.
>
> I would guess it is some kind of thread limit but I can't seem to get 
> past it. Any suggestions? Below is an example command and output. If I 
> cut out one of the outputs, it works fine.
>
> Thanks for your suggestions!
>
> Deron
>

Reading this, I obviously did not make the problem very clear.

I am trying to do this (simplified):

ffmpeg -i "/dev/dvb/adapter0/dvr0" -b:v 2400k "hi.m3u8" -b:v 1200k 
"med.m3u8" -b:v 600k "low.m3u8" -vn "audio.m3u8"

And it fails with: /dev/dvb/adapter0/dvr0: Value too large for defined 
data type

But if I remove any 2 outputs like:

ffmpeg -i "/dev/dvb/adapter0/dvr0" -b:v 2400k "hi.m3u8" -vn "audio.m3u8"

It works. I can see fps is very close (not sure if it is a because of 
HLS working in "real time" or some thread limitation), but cpu usage is 
very light.

Since I have 2 adapters, I can actually run

ffmpeg -i "/dev/dvb/adapter0/dvr0" -b:v 2400k "hi.m3u8" -b:v 1200k 
"med.m3u8"
ffmpeg -i "/dev/dvb/adapter1/dvr0" -b:v 600k "low.m3u8" -vn "audio.m3u8"

And that runs fine (again with light cpu usage). Obviously a threading 
issue. What can I do to fix this?

Thanks,

Deron



> ffmpeg -f mpegts -i /dev/dvb/adapter0/dvr0 -c:v libx264 -vf 
> scale=1280:720 -s 1280x720 -aspect 1280:720 -pix_fmt yuv420p -r 29.97 
> -preset veryfast -b:v 2400k -c:a libfaac -ar 48000 -ac 2 -async 2 -f 
> hls -hls_time 2 -hls_list_size 10 -hls_wrap 20 -y 
> "/var/www/html/stream/WPBF/wpbf.hi.m3u8" -c:v libx264 -vf 
> scale=1280:720 -s 1280x720 -aspect 1280:720 -pix_fmt yuv420p -r 29.97 
> -preset veryfast -b:v 1200k -c:a libfaac -ar 48000 -ac 2 -async 2 -f 
> hls -hls_time 2 -hls_list_size 10 -hls_wrap 20 -y 
> "/var/www/html/stream/WPBF/wpbf.mid.m3u8" -c:v libx264 -vf 
> scale=1280:720 -s 1280x720 -aspect 1280:720 -pix_fmt yuv420p -r 29.97 
> -preset veryfast -b:v 600k -c:a libfaac -ar 48000 -ac 2 -async 2 -f 
> hls -hls_time 2 -hls_list_size 10 -hls_wrap 20 -y 
> "/var/www/html/stream/WPBF/wpbf.low.m3u8" -vn -c:a libfaac -b:a 30k 
> -ar 24000 -ac 1  -f hls -hls_time 2 -hls_list_size 10 -hls_wrap 20 -y 
> "/var/www/html/stream/WPBF/wpbf.a.m3u8"
>
>
> ffmpeg version N-69206-g4b46ce8 Copyright (c) 2000-2015 the FFmpeg 
> developers
>   built on Jan 22 2015 18:39:59 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
>   configuration: --enable-shared --enable-gpl --enable-nonfree 
> --enable-libxvid --enable-libx264 --enable-libmp3lame 
> --enable-libvorbis --enable-libfaac --enable-libopenjpeg
>   libavutil      54. 17.100 / 54. 17.100
>   libavcodec     56. 20.100 / 56. 20.100
>   libavformat    56. 19.100 / 56. 19.100
>   libavdevice    56.  4.100 / 56.  4.100
>   libavfilter     5.  8.101 /  5.  8.101
>   libswscale      3.  1.101 /  3.  1.101
>   libswresample   1.  1.100 /  1.  1.100
>   libpostproc    53.  3.100 / 53.  3.100
> [mpeg2video @ 0x1c430a0] Invalid frame dimensions 0x0.
> Input #0, mpegts, from '/dev/dvb/adapter0/dvr0':
>   Duration: N/A, start: 94543.371178, bitrate: N/A
>     Stream #0:0[0x31]: Video: mpeg2video (Main), yuv420p(tv), 
> 1920x1080 [SAR 1:1 DAR 16:9], max. 24000 kb/s, 29.97 fps, 29.97 tbr, 
> 90k tbn, 59.94 tbc
>     Stream #0:1[0x34]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s
> -async is forwarded to lavfi similarly to -af 
> aresample=async=2:min_hard_comp=0.100000:first_pts=0.
>     Last message repeated 3 times
> [libx264 @ 0x1db48a0] using SAR=1/1
> [libx264 @ 0x1db48a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 
> SSE4.2 AVX
> [libx264 @ 0x1db48a0] profile High, level 3.1
> [libx264 @ 0x1c4b780] using SAR=1/1
> [libx264 @ 0x1c4b780] using cpu capabilities: MMX2 SSE2Fast SSSE3 
> SSE4.2 AVX
> [libx264 @ 0x1c4b780] profile High, level 3.1
> [libx264 @ 0x1c4f400] using SAR=1/1
> [libx264 @ 0x1c4f400] using cpu capabilities: MMX2 SSE2Fast SSSE3 
> SSE4.2 AVX
> [libx264 @ 0x1c4f400] profile High, level 3.1
> Output #0, hls, to '/var/www/html/stream/WPBF/wpbf.hi.m3u8':
>   Metadata:
>     encoder         : Lavf56.19.100
>     Stream #0:0: Video: h264 (libx264), yuv420p, 1280x720 [SAR 1:1 DAR 
> 16:9], q=-1--1, 2400 kb/s, 29.97 fps, 90k tbn, 29.97 tbc
>     Metadata:
>       encoder         : Lavc56.20.100 libx264
>     Stream #0:1: Audio: aac (libfaac), 48000 Hz, stereo, s16, 128 kb/s
>     Metadata:
>       encoder         : Lavc56.20.100 libfaac
> Output #1, hls, to '/var/www/html/stream/WPBF/wpbf.mid.m3u8':
>   Metadata:
>     encoder         : Lavf56.19.100
>     Stream #1:0: Video: h264 (libx264), yuv420p, 1280x720 [SAR 1:1 DAR 
> 16:9], q=-1--1, 1200 kb/s, 29.97 fps, 90k tbn, 29.97 tbc
>     Metadata:
>       encoder         : Lavc56.20.100 libx264
>     Stream #1:1: Audio: aac (libfaac), 48000 Hz, stereo, s16, 128 kb/s
>     Metadata:
>       encoder         : Lavc56.20.100 libfaac
> Output #2, hls, to '/var/www/html/stream/WPBF/wpbf.low.m3u8':
>   Metadata:
>     encoder         : Lavf56.19.100
>     Stream #2:0: Video: h264 (libx264), yuv420p, 1280x720 [SAR 1:1 DAR 
> 16:9], q=-1--1, 600 kb/s, 29.97 fps, 90k tbn, 29.97 tbc
>     Metadata:
>       encoder         : Lavc56.20.100 libx264
>     Stream #2:1: Audio: aac (libfaac), 48000 Hz, stereo, s16, 128 kb/s
>     Metadata:
>       encoder         : Lavc56.20.100 libfaac
> Output #3, hls, to '/var/www/html/stream/WPBF/wpbf.a.m3u8':
>   Metadata:
>     encoder         : Lavf56.19.100
>     Stream #3:0: Audio: aac (libfaac), 24000 Hz, mono, s16, 30 kb/s
>     Metadata:
>       encoder         : Lavc56.20.100 libfaac
> Stream mapping:
>   Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (libx264))
>   Stream #0:1 -> #0:1 (ac3 (native) -> aac (libfaac))
>   Stream #0:0 -> #1:0 (mpeg2video (native) -> h264 (libx264))
>   Stream #0:1 -> #1:1 (ac3 (native) -> aac (libfaac))
>   Stream #0:0 -> #2:0 (mpeg2video (native) -> h264 (libx264))
>   Stream #0:1 -> #2:1 (ac3 (native) -> aac (libfaac))
>   Stream #0:1 -> #3:0 (ac3 (native) -> aac (libfaac))
> Press [q] to stop, [?] for help
> [mpegts @ 0x1c26340] PES packet size mismatch=N/A time=00:00:02.30 
> bitrate=N/A dup=24 drop=0
> [mpeg2video @ 0x1c479c0] ac-tex damaged at 30 5
> [mpeg2video @ 0x1c479c0] Warning MVs not available
> [mpeg2video @ 0x1c479c0] concealing 7560 DC, 7560 AC, 7560 MV errors 
> in P frame
> [ac3 @ 0x1c46260] incomplete frame
> /dev/dvb/adapter0/dvr0: Value too large for defined data type
>     Last message repeated 1 times
> frame=   96 fps= 51 q=-1.0 Lq=-1.0 q=-1.0 size=N/A time=00:00:03.13 
> bitrate=N/A dup=27 drop=0
> video:1360kB audio:145kB subtitle:0kB other streams:0kB global 
> headers:0kB muxing overhead: unknown
> [libx264 @ 0x1db48a0] frame I:3     Avg QP:21.51  size: 77363
> [libx264 @ 0x1db48a0] frame P:34    Avg QP:24.37  size: 13149
> [libx264 @ 0x1db48a0] frame B:59    Avg QP:26.02  size:  2416
> [libx264 @ 0x1db48a0] consecutive B-frames:  4.2% 29.2% 37.5% 29.2%
> [libx264 @ 0x1db48a0] mb I  I16..4: 14.4% 37.0% 48.5%
> [libx264 @ 0x1db48a0] mb P  I16..4:  4.9%  4.9%  0.6%  P16..4: 36.3% 
> 13.0%  6.1%  0.0%  0.0%    skip:34.3%
> [libx264 @ 0x1db48a0] mb B  I16..4:  0.4%  0.2%  0.0%  B16..8: 12.1%  
> 2.5%  0.2%  direct: 9.4%  skip:75.3%  L0:32.6% L1:54.1% BI:13.3%
> [libx264 @ 0x1db48a0] final ratefactor: 20.34
> [libx264 @ 0x1db48a0] 8x8 transform intra:42.0% inter:42.7%
> [libx264 @ 0x1db48a0] coded y,uvDC,uvAC intra: 55.0% 81.7% 52.3% 
> inter: 6.0% 19.6% 1.3%
> [libx264 @ 0x1db48a0] i16 v,h,dc,p: 39% 33% 22%  6%
> [libx264 @ 0x1db48a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 20% 28% 4%  
> 4%  5%  4%  5%  5%
> [libx264 @ 0x1db48a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 25%  7% 6%  
> 7%  8%  7%  8%  7%
> [libx264 @ 0x1db48a0] i8c dc,h,v,p: 40% 27% 25%  9%
> [libx264 @ 0x1db48a0] Weighted P-Frames: Y:0.0% UV:0.0%
> [libx264 @ 0x1db48a0] kb/s:2052.11
> [libx264 @ 0x1c4b780] frame I:3     Avg QP:26.95  size: 44610
> [libx264 @ 0x1c4b780] frame P:34    Avg QP:29.81  size:  5683
> [libx264 @ 0x1c4b780] frame B:59    Avg QP:32.12  size:   949
> [libx264 @ 0x1c4b780] consecutive B-frames:  4.2% 29.2% 37.5% 29.2%
> [libx264 @ 0x1c4b780] mb I  I16..4: 21.7% 49.9% 28.4%
> [libx264 @ 0x1c4b780] mb P  I16..4:  4.1%  4.6%  0.1%  P16..4: 20.5%  
> 7.4%  2.6%  0.0%  0.0%    skip:60.8%
> [libx264 @ 0x1c4b780] mb B  I16..4:  0.3%  0.1%  0.0%  B16..8: 6.3%  
> 1.1%  0.0%  direct: 3.0%  skip:89.1%  L0:33.2% L1:58.6% BI: 8.3%
> [libx264 @ 0x1c4b780] final ratefactor: 24.88
> [libx264 @ 0x1c4b780] 8x8 transform intra:50.4% inter:46.8%
> [libx264 @ 0x1c4b780] coded y,uvDC,uvAC intra: 45.4% 64.9% 28.0% 
> inter: 1.9% 7.1% 0.2%
> [libx264 @ 0x1c4b780] i16 v,h,dc,p: 41% 33% 19%  7%
> [libx264 @ 0x1c4b780] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 21% 28% 4%  
> 4%  5%  4%  6%  5%
> [libx264 @ 0x1c4b780] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 24%  8% 7%  
> 7%  8%  6%  8%  6%
> [libx264 @ 0x1c4b780] i8c dc,h,v,p: 42% 26% 25%  7%
> [libx264 @ 0x1c4b780] Weighted P-Frames: Y:0.0% UV:0.0%
> [libx264 @ 0x1c4b780] kb/s:956.64
> [libx264 @ 0x1c4f400] frame I:3     Avg QP:32.85  size: 24825
> [libx264 @ 0x1c4f400] frame P:34    Avg QP:36.57  size:  2594
> [libx264 @ 0x1c4f400] frame B:59    Avg QP:39.34  size:   421
> [libx264 @ 0x1c4f400] consecutive B-frames:  4.2% 29.2% 37.5% 29.2%
> [libx264 @ 0x1c4f400] mb I  I16..4: 30.6% 59.5%  9.9%
> [libx264 @ 0x1c4f400] mb P  I16..4:  3.4%  4.0%  0.0%  P16..4: 11.3%  
> 3.4%  0.9%  0.0%  0.0%    skip:76.9%
> [libx264 @ 0x1c4f400] mb B  I16..4:  0.2%  0.1%  0.0%  B16..8: 3.3%  
> 0.5%  0.0%  direct: 1.1%  skip:94.9%  L0:34.9% L1:61.8% BI: 3.3%
> [libx264 @ 0x1c4f400] final ratefactor: 30.77
> [libx264 @ 0x1c4f400] 8x8 transform intra:56.3% inter:50.0%
> [libx264 @ 0x1c4f400] coded y,uvDC,uvAC intra: 33.4% 49.8% 16.7% 
> inter: 0.5% 2.7% 0.0%
> [libx264 @ 0x1c4f400] i16 v,h,dc,p: 45% 34% 14%  8%
> [libx264 @ 0x1c4f400] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 21% 19% 33% 4%  
> 3%  5%  4%  5%  5%
> [libx264 @ 0x1c4f400] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 24% 11% 7%  
> 6%  8%  6%  7%  5%
> [libx264 @ 0x1c4f400] i8c dc,h,v,p: 51% 22% 22%  5%
> [libx264 @ 0x1c4f400] Weighted P-Frames: Y:0.0% UV:0.0%
> [libx264 @ 0x1c4f400] kb/s:468.32




More information about the ffmpeg-user mailing list