[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