[FFmpeg-trac] #9054(undetermined:new): low qsv encode performance

FFmpeg trac at avcodec.org
Tue Jan 5 18:15:56 EET 2021


#9054: low qsv encode performance
-------------------------------------+-------------------------------------
             Reporter:  dandenson    |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:
 using this command, or variations with hevc_qsv, with or without -hwaccel
 qsv, video errors and segfaults and lower than expected performance.

 ffmpeg -hwaccel qsv -i
 http://hdhomerun:5004/auto/v2.1 -c:v hevc_qsv -c:a aac -b:a 64k
 -profile:v main -global_quality 30 -g 48 -keyint_min 48 -sc_threshold
 0 -hls_time 2 -hls_list_size 8 -hls_segment_type mpegts -cc_stream_map
 "ccgroup:cc,instreamid:CC1,language:en" -hls_flags delete_segments
 -hls_segment_filename 720p_%03d.ts 720p.m3u8


 CPU is i3-10100 which is able to handle at least 14 full h.264 transcodes,
 likely more.  I am only able to encode 2 hevc streams and those streams
 segfault frequently.  If I introduce a 3rd stream, all 3 encoders struggle
 and will segfault within a few minutes.  They also don't produce real-time
 results.

 My expectation based on single file testing and other software packages is
 that I should be able to handle 4 hevc encodes at 30fps using qsv, I'm
 only getting 2 and those are having substantial issues.

 Here is the output of ffmpeg when running the above script.  This was
 cancelled after the third ts file what written:

 ffmpeg version 4.3.1-4ubuntu1 Copyright (c) 2000-2020 the FFmpeg
 developers
   built with gcc 10 (Ubuntu 10.2.0-9ubuntu2)
   configuration: --prefix=/usr --extra-version=4ubuntu1
 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu
 --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl
 --disable-stripping --enable-avresample --disable-filter=resample
 --enable-gnutls --enable-ladspa --enable-libaom --enable-libass
 --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio
 --enable-libcodec2 --enable-libdav1d --enable-libflite
 --enable-libfontconfig --enable-libfreetype --enable-libfribidi
 --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame
 --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt
 --enable-libopus --enable-libpulse --enable-librabbitmq
 --enable-librsvg --enable-librubberband --enable-libshine
 --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt
 --enable-libssh --enable-libtheora --enable-libtwolame
 --enable-libvidstab --enable-libvorbis --enable-libvpx
 --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2
 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2
 --enable-omx --enable-openal --enable-opencl --enable-opengl
 --enable-sdl2 --enable-pocketsphinx --enable-libmfx --enable-libdc1394
 --enable-libdrm --enable-libiec61883 --enable-nvenc
 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
   libavutil      56. 51.100 / 56. 51.100
   libavcodec     58. 91.100 / 58. 91.100
   libavformat    58. 45.100 / 58. 45.100
   libavdevice    58. 10.100 / 58. 10.100
   libavfilter     7. 85.100 /  7. 85.100
   libavresample   4.  0.  0 /  4.  0.  0
   libswscale      5.  7.100 /  5.  7.100
   libswresample   3.  7.100 /  3.  7.100
   libpostproc    55.  7.100 / 55.  7.100
 [mpeg2video @ 0x55bd8aece580] Invalid frame dimensions 0x0.
     Last message repeated 18 times
 Input #0, mpegts, from 'http://10.39.40.173:5004/auto/v2.1':
   Duration: N/A, start: 47689.440967, bitrate: N/A
   Program 1
     Stream #0:0[0x31]: Video: mpeg2video (Main) ([2][0][0][0] /
 0x0002), yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9],
 Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
     Side data:
       cpb: bitrate max/min/avg: 80000000/0/0 buffer size: 9781248
 vbv_delay: N/A
     Stream #0:1[0x34](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz,
 stereo, fltp, 192 kb/s
     Stream #0:2[0x35](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz,
 stereo, fltp, 96 kb/s
 Stream mapping:
   Stream #0:0 -> #0:0 (mpeg2video (native) -> hevc (hevc_qsv))
   Stream #0:1 -> #0:1 (ac3 (native) -> aac (native))
 Press [q] to stop, [?] for help
 Output #0, hls, to '720p.m3u8':
   Metadata:
     encoder         : Lavf58.45.100
     Stream #0:0: Video: hevc (hevc_qsv), nv12, 1920x1080 [SAR 1:1 DAR
 16:9], q=2-31, 1000 kb/s, 29.97 fps, 90k tbn, 29.97 tbc
     Metadata:
       encoder         : Lavc58.91.100 hevc_qsv
     Side data:
       cpb: bitrate max/min/avg: 0/0/1000000 buffer size: 0 vbv_delay: N/A
     Stream #0:1(eng): Audio: aac (LC), 48000 Hz, stereo, fltp, 64 kb/s
     Metadata:
       encoder         : Lavc58.91.100 aac
 [hls @ 0x55bd8aee7940] Opening '720p_000.ts' for writingrate=N/A
 dup=29 drop=0 speed=2.59x
 [hls @ 0x55bd8aee7940] Opening '720p.m3u8.tmp' for writing
 [hls @ 0x55bd8aee7940] Opening '720p_001.ts' for writingrate=N/A
 dup=29 drop=0 speed=2.35x
 [hls @ 0x55bd8aee7940] Opening '720p.m3u8.tmp' for writing
 [hls @ 0x55bd8aee7940] Opening '720p_002.ts' for writingrate=N/A
 dup=29 drop=0 speed=2.24x
 [hls @ 0x55bd8aee7940] Opening '720p.m3u8.tmp' for writing
 [hls @ 0x55bd8aee7940] Opening '720p_003.ts' for writing
 [hls @ 0x55bd8aee7940] Opening '720p.m3u8.tmp' for writing
 frame=  194 fps= 62 q=-0.0 Lsize=N/A time=00:00:06.30 bitrate=N/A
 dup=29 drop=0 speed=2.01x
 video:8928kB audio:49kB subtitle:0kB other streams:0kB global
 headers:0kB muxing overhead: unknown
 [aac @ 0x55bd8aef87c0] Qavg: 149.014
 Exiting normally, received signal 2.

 I'm also seeing numerous mpeg2 and ac3 error in ffmpeg that other players
 don't see.  They end up showing in the output video as errors in audio and
 video
 [mpegts @ 0x564b2a15a340] Packet corrupt (stream = 0, dts =
 1078791167).drop=0 speed=1.02x
 [mpeg2video @ 0x564b2a187e40] ac-tex damaged at 10 10
 [mpeg2video @ 0x564b2a187e40] ac-tex damaged at 11 6
 [mpeg2video @ 0x564b2a187e40] ac-tex damaged at 11 9
 [mpeg2video @ 0x564b2a187e40] Invalid mb type in P-frame at 16 31
 [mpeg2video @ 0x564b2a187e40] ac-tex damaged at 11 3
 [mpeg2video @ 0x564b2a187e40] ac-tex damaged at 48 4
 [mpeg2video @ 0x564b2a187e40] Warning MVs not available
 [mpeg2video @ 0x564b2a187e40] concealing 2413 DC, 2413 AC, 2413 MV errors
 in P frame
 [mpegts @ 0x564b2a15a340] PES packet size mismatch
 [mpegts @ 0x564b2a15a340] Packet corrupt (stream = 1, dts = 1078742391).
 [ac3 @ 0x564b2a1c8e40] exponent -1 is out-of-range
 [ac3 @ 0x564b2a1c8e40] error decoding the audio block
 Error while decoding stream #0:1: Error number -16976906 occurred



 I cannot tell if this is due to support for 10th gen intel chips or
 library issues on this Ubuntu 20.10 system.  I updated from 20.04 to 20.10
 hoping for updated support for qsv, these issues exist in 20.04 and 20.10.



 My goal is to have a continuously running ffmpeg instance transcoding
 MPEG2 to hevc/HLS but the output video is so flawed its difficult to watch
 and the segfaults are a show stopper.

 I have this system ready and waiting to run more tests if needed.

 Thank you.

--
Ticket URL: <https://trac.ffmpeg.org/ticket/9054>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list