FFmpeg 4 против версии 2.2 очень медленные транскодирование в контейнере VMWare CentOS 6

325
aernative

Вист, используя «ffmpeg version n4.0.1», заметил, что на хосте CentOS6 внутри контейнера VMware транскодирование видео занимает почти вдвое больше времени, чем «ffmpeg version 2.2.1».

Тесты ниже, запустили 3 итерации, самое быстрое время только ниже.

Файл, проверенный с тем же самым 2.8mb запасным видео.

Все виртуальные машины работают под управлением CentOS версии 6.10.

| ВМ | Версия FFMpeg | Время | | Virtualbox | 4.0.1 | 11 секунд | | Virtualbox | 2.2.1 | 18 секунд | | VMWare | 2.2.1 | 29 секунд | | VMWare | 4.0.1 | 1 минута | 

Я буквально понятия не имею, почему это отличается, и не могу найти никакой логической причины для этого - какие-нибудь бобы FFMpeg / VMWare там имеют какое-либо представление о том, что может происходить?

4.01 скомпилировано из исходного кода, 2.2.1 соответствует EPEL.

Просто добавить - информация о процессоре VMWare выглядит следующим образом -

процессор: 0 vendor_id: GenuineIntel семья процессора: 6 модель: 62 Название модели: Intel (R) Xeon (R) CPU E5-2620 v2 @ 2,10 ГГц степпинг: 4 микрокод: 1064 процессор МГц: 2100.000 размер кеша: 15360 кб физический идентификатор: 0 братьев и сестер: 1 основной идентификатор: 0 процессорных ядер: 1 апицид: 0 начальная апицид: 0 фпу: да fpu_exception: да Уровень процессора: 13 wp: да флаги: FPU VME-де-псевдоэфедрин TSC MSR пае MCE CX8 APIC SEP MTRR PGE MCA CMOV погладить pse36 clflush д.т.н. MMX fxsr ссе sse2 сс Системный вызов пх rdtscp лм constant_tsc arch_perfmon УИБ БПС xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock ПНИ PCLMULQDQ SSSE3 CX16 PCID sse4_1 sse4_2 x2APIC POPCNT АЕС XSAVE avx f16c rdrand гипервизор lahf_lm arat epb xsaveopt pln pts dtherm pti ретполин fsgsbase smep bogomips: 4200,00 размер clflush: 64 cache_alignment: 64 размеры адресов: 40-битный физический, 48-битный виртуальный управление энергопотреблением: 

Информация о процессоре в сравнении с VirtualBox указана как

обработчик: 0 vendor_id: GenuineIntel семья процессора: 6 модель: 158 Название модели: Intel (R) Core (TM) i7-7820HQ CPU @ 2,90 ГГц степпинг: 9 процессор МГц: 2903,925 размер кеша: 8192 КБ физический идентификатор: 0 братьев и сестер: 2 основной идентификатор: 0 ядер процессора: 2 апицид: 0 начальная апицид: 0 фпу: да fpu_exception: да Уровень процессора: 22 wp: да флаги: FPU VME-де-псевдоэфедрин TSC MSR пае MCE CX8 APIC SEP MTRR PGE MCA CMOV погладить pse36 clflush MMX fxsr ße SSE2 ХТ системных вызовов пх rdtscp ой constant_tsc rep_good xtopology nonstop_tsc ПНИ PCLMULQDQ SSSE3 CX16 PCID sse4_1 sse4_2 movbe POPCNT äes XSAVE AVX rdrand lahf_lm ABM 3dnowprefetch fsgsbase avx2 invpcid rdseed bogomips: 5807,85 размер clflush: 64 cache_alignment: 64 размеры адресов: физические 39 бит, виртуальные 48 бит управление энергопотреблением: 

Выше показано, что новая версия работает лучше и хуже на разных архитектурах.

Чтобы быть на 100% ясным, я перезапустил некоторые тесты ниже - это разные виртуальные машины в одном облаке с одинаковыми настройками -

FFMPeg 4 - 122,861 секунды

[root @ проверочный тест] # ./benchmark.sh процессор: 0 vendor_id: GenuineIntel семья процессора: 6 модель: 62 Название модели: Intel (R) Xeon (R) CPU E5-2620 v2 @ 2,10 ГГц степпинг: 4 микрокод: 1064 процессор МГц: 2100.000 размер кеша: 15360 кб физический идентификатор: 0 братьев и сестер: 1 основной идентификатор: 0 процессорных ядер: 1 апицид: 0 начальная апицид: 0 фпу: да fpu_exception: да Уровень процессора: 13 wp: да флаги: FPU VME-де-псевдоэфедрин TSC MSR пае MCE CX8 APIC SEP MTRR PGE MCA CMOV погладить pse36 clflush д.т.н. MMX fxsr ссе sse2 сс Системный вызов пх rdtscp лм constant_tsc arch_perfmon УИБ БПС xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock ПНИ PCLMULQDQ SSSE3 CX16 PCID sse4_1 sse4_2 x2APIC POPCNT АЕС XSAVE avx f16c rdrand гипервизор lahf_lm arat epb xsaveopt pln pts dtherm pti ретполин fsgsbase smep bogomips: 4200,00 размер clflush: 64 cache_alignment: 64 размеры адресов: 40-битный физический, 48-битный виртуальный управление энергопотреблением:  процессор: 1 vendor_id: GenuineIntel семья процессора: 6 модель: 62 Название модели: Intel (R) Xeon (R) CPU E5-2620 v2 @ 2,10 ГГц степпинг: 4 микрокод: 1064 процессор МГц: 2100.000 размер кеша: 15360 кб физический идентификатор: 2 братьев и сестер: 1 основной идентификатор: 0 процессорных ядер: 1 апицид: 2 начальная апицид: 2 фпу: да fpu_exception: да Уровень процессора: 13 wp: да флаги: FPU VME-де-псевдоэфедрин TSC MSR пае MCE CX8 APIC SEP MTRR PGE MCA CMOV погладить pse36 clflush д.т.н. MMX fxsr ссе sse2 сс Системный вызов пх rdtscp лм constant_tsc arch_perfmon УИБ БПС xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock ПНИ PCLMULQDQ SSSE3 CX16 PCID sse4_1 sse4_2 x2APIC POPCNT АЕС XSAVE avx f16c rdrand гипервизор lahf_lm arat epb xsaveopt pln pts dtherm pti ретполин fsgsbase smep bogomips: 4200,00 размер clflush: 64 cache_alignment: 64 размеры адресов: 40-битный физический, 48-битный виртуальный управление энергопотреблением:  ffmpeg версия n4.0.1 Copyright (c) 2000-2018 разработчики FFmpeg построен с GCC 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-23) конфигурация: --prefix = / root / ffmpeg_build --pkg-config-flags = - статическая --extra-cflags = -I / root / ffmpeg_build / include --extra-ldflags = -L / root / ffmpeg_build / lib - -extra-libs = -lpthread --extra-libs = -lm --bindir = / usr / bin --enable-gpl --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libopus - enable-libvorbis --enable-libtheora --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 56. 14.100 / 56. 14.100 libavcodec 58. 18.100 / 58. 18.100 libavformat 58. 12.100 / 58. 12.100 libavdevice 58. 3.100 / 58. 3.100 libavfilter 7. 16.100 / 7. 16.100 libswscale 5. 1.100 / 5. 1.100 libswresample 3. 1.100 / 3. 1.100 libpostproc 55. 1.100 / 55. 1.100 Введите # 0, mov, mp4, m4a, 3gp, 3g2, mj2, из '/root/test/test.mov': Метаданные: major_brand: isom minor_version: 1 compatibility_brands: isomavc1mp42 Время создания: 2016-11-03T20: 11: 18.000000Z Продолжительность: 00: 00: 09.33, начало: 0.000000, скорость передачи: 20807 кбит / с Поток # 0: 0 (und): Видео: h264 (ограниченная базовая линия) (avc1 / 0x31637661), yuv420p (tv, bt709), 1920x1080 [SAR 1: 1 DAR 16: 9], 20805 кбит / с, 30 к / с, 30 tbr, 30 tbn, 60 tbc (по умолчанию) Метаданные: Время создания: 2016-11-03T20: 11: 08.000000Z Отображение потока: Поток # 0: 0 -> # 0: 0 (h264 (собственный) -> h264 (libx264)) Нажмите [q], чтобы остановить, [?] Для помощи [libx264 @ 0x2d05c40] с использованием SAR = 1/1 [libx264 @ 0x2d05c40] размер кадра в МБ (120x68)> предел уровня (1620) [libx264 @ 0x2d05c40] Размер DPB (1 кадр, 3133440 байт)> предел уровня (0 кадров, 3110400 байт) [libx264 @ 0x2d05c40] Скорость в МБ (244800)> предел уровня (40500) [libx264 @ 0x2d05c40] используя возможности процессора: нет! [libx264 @ 0x2d05c40] профиль Ограниченная базовая линия, уровень 3.0 [libx264 @ 0x2d05c40] 264 - ядро ​​120 r2151 a3f4407 - кодек H.264 / MPEG-4 AVC - Copyleft 2003-2011 - http://www.videolan.org/x264.html - параметры: cabac = 0 ref = 1 deblock = 1: 0: 0 анализировать = 0x1: 0x111 me = umh subme = 8 psy = 1 psy_rd = 1.00: 0.00 mixed_ref = 0 me_range = 16 chroma_me = 1 trellis = 1 8x8dct = 0 cqm = 0 мертвая зона = 21,11 fast_pskip = 1 chroma_qp_offset = -2 потоков = 3 sliced_threads = 0 nr = 0 decimate = 1 interlaced = 0 bluray_compat = 0 constrained_intra = 0 bframes = 0 weightp = 0 keyint = 250 keyint_min = 25 scenecut = 40 intra_refresh = 0 rc_lookahead = 50 rc = crf mbtree = 1 crf = 26,0 qcomp = 0,60 qpmin = 0 qpmax = 69 qpstep = 4 vbv_maxrate = 1500 vbv_bufsize = 3000 crf_max = 0,0 nal_hrd = нет ip_ratio = 1,40 aq = 1: 1,00 Выведите # 0, mp4, в '/root/test/out.mp4': Метаданные: major_brand: isom minor_version: 1 compatibility_brands: isomavc1mp42 кодировщик: Lavf58.12.100 Поток # 0: 0 (und): Видео: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1: 1 DAR 16: 9], q = -1--1, 30 кадров в секунду, 15360 tbn, 30 TBC (по умолчанию) Метаданные: Время создания: 2016-11-03T20: 11: 08.000000Z кодировщик: Lavc58.18.100 libx264 Дополнительные данные: cpb: битрейт макс / мин / ср: 1500000/0/0 размер буфера: 3000000 vbv_delay: -1 [mp4 @ 0x2d04680] Начало второго прохода: перемещение атома moov в начало файла.0726x кадр = 280 кадров в секунду = 2,3 q = -1,0 Lsize = 1865 кБ время = 00: 00: 09,30 битрейт = 1642,5 кбит / с, скорость = 0,0757x видео: 1863 КБ, аудио: 0 КБ, субтитры: 0 КБ, другие потоки: 0 КБ, глобальные заголовки: 0 КБ, мультиплексирование: 0.103491% [libx264 @ 0x2d05c40] кадр I: 2 Ср. QP: 37,09 размер: 36746 [libx264 @ 0x2d05c40] кадр P: 278 Ср. QP: 38,97 размер: 6594 [libx264 @ 0x2d05c40] mb I I16..4: 79,3% 0,0% 20,7% [libx264 @ 0x2d05c40] mb P I16..4: 0,6% 0,0% 0,2% P16..4: 17,3% 2,7% 1,5% 0,0% 0,0% пропуск: 77,7% [libx264 @ 0x2d05c40] закодировано y, uvDC, uvAC intra: 30,9% 23,0% 0,2% inter: 3,0% 1,5% 0,0% [libx264 @ 0x2d05c40] i16 v, h, dc, p: 33% 28% 9% 31% [libx264 @ 0x2d05c40] i4 v, h, dc, ddl, ddr, vr, hd, vl, hu: 4% 4% 13% 16% 21% 14% 14% 8% 6% [libx264 @ 0x2d05c40] i8c dc, h, v, p: 85% 8% 7% 1% [libx264 @ 0x2d05c40] кбит / с: 1634,35 122,861 секунды для завершения 

FFMpeg 2 - 32,378 секунды

[root @ staging test] # ./benchmark.sh процессор: 0 vendor_id: GenuineIntel семья процессора: 6 модель: 62 Название модели: Intel (R) Xeon (R) CPU E5-2620 v2 @ 2,10 ГГц степпинг: 4 микрокод: 1064 процессор МГц: 2100.000 размер кеша: 15360 кб физический идентификатор: 0 братьев и сестер: 1 основной идентификатор: 0 процессорных ядер: 1 апицид: 0 начальная апицид: 0 фпу: да fpu_exception: да Уровень процессора: 13 wp: да флаги: FPU VME-де-псевдоэфедрин TSC MSR пае MCE CX8 APIC SEP MTRR PGE MCA CMOV погладить pse36 clflush д.т.н. MMX fxsr ссе sse2 сс Системный вызов пх rdtscp лм constant_tsc arch_perfmon УИБ БПС xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock ПНИ PCLMULQDQ SSSE3 CX16 PCID sse4_1 sse4_2 x2APIC POPCNT АЕС XSAVE avx f16c rdrand гипервизор lahf_lm arat epb xsaveopt pln pts dtherm pti ретполин fsgsbase smep bogomips: 4200,00 размер clflush: 64 cache_alignment: 64 размеры адресов: 40-битный физический, 48-битный виртуальный управление энергопотреблением:  процессор: 1 vendor_id: GenuineIntel семья процессора: 6 модель: 62 Название модели: Intel (R) Xeon (R) CPU E5-2620 v2 @ 2,10 ГГц степпинг: 4 микрокод: 1064 процессор МГц: 2100.000 размер кеша: 15360 кб физический идентификатор: 2 братьев и сестер: 1 основной идентификатор: 0 процессорных ядер: 1 апицид: 2 начальная апицид: 2 фпу: да fpu_exception: да Уровень процессора: 13 wp: да флаги: FPU VME-де-псевдоэфедрин TSC MSR пае MCE CX8 APIC SEP MTRR PGE MCA CMOV погладить pse36 clflush д.т.н. MMX fxsr ссе sse2 сс Системный вызов пх rdtscp лм constant_tsc arch_perfmon УИБ БПС xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock ПНИ PCLMULQDQ SSSE3 CX16 PCID sse4_1 sse4_2 x2APIC POPCNT АЕС XSAVE avx f16c rdrand гипервизор lahf_lm arat epb xsaveopt pln pts dtherm pti ретполин fsgsbase smep bogomips: 4200,00 размер clflush: 64 cache_alignment: 64 размеры адресов: 40-битный физический, 48-битный виртуальный управление энергопотреблением:  ffmpeg версия 2.2.1 Copyright (c) 2000-2014 разработчики FFmpeg построено 13 апреля 2014 года в 13:00:18 с gcc 4.4.6 (GCC) 20120305 (Red Hat 4.4.6-4) конфигурация: --prefix = / usr --libdir = / usr / lib64 --shlibdir = / usr / lib64 --mandir = / usr / share / man --enable-shared --enable-runtime-cpudetect --enable- gpl --enable-version3 --enable-postproc --enable-avfilter --enable-pthreads --enable-x11grab --enable-vdpau --disable-avisynth --enable-frei0r --enable-libopencv --enable- libdc1394 --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --extra-cflags = '- O2 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE = 2 -exxceptions - fstack-protector --param = ssp-buffer-size = 4 -m64 -mtune = универсальный -fPIC '--disable-stripping libavutil 52. 66.100 / 52. 66.100 libavcodec 55. 52.102 / 55. 52.102 libavformat 55. 33.100 / 55. 33.100 libavdevice 55. 10.100 / 55. 10.100 libavfilter 4. 2.100 / 4. 2.100 libswscale 2. 5.102 / 2. 5.102 libswresample 0. 18.100 / 0. 18.100 libpostproc 52. 3.100 / 52. 3.100 Введите # 0, mov, mp4, m4a, 3gp, 3g2, mj2, из '/root/test/test.mov': Метаданные: major_brand: isom minor_version: 1 compatibility_brands: isomavc1mp42 creation_time: 2016-11-03 20:11:18 Продолжительность: 00: 00: 09.33, начало: 0.000000, скорость передачи: 20807 кбит / с Поток # 0: 0 (und): Видео: h264 (ограниченная базовая линия) (avc1 / 0x31637661), yuv420p (tv, bt709), 1920x1080 [SAR 1: 1 DAR 16: 9], 20805 кбит / с, 30 к / с, 30 tbr, 30 tbn, 60 tbc (по умолчанию) Метаданные: creation_time: 2016-11-03 20:11:08 [libx264 @ 0x2139060] с использованием SAR = 1/1 [libx264 @ 0x2139060] размер кадра в МБ (120x68)> предел уровня (1620) [libx264 @ 0x2139060] Размер DPB (5 кадров, 40800 МБ)> ограничение уровня (0 кадров, 8100 МБ) [libx264 @ 0x2139060] Скорость в МБ (244800)> предел уровня (40500) [libx264 @ 0x2139060] с использованием возможностей процессора: MMX2 SSE2Fast SSSE3 SSE4.2 AVX [libx264 @ 0x2139060] профиль Ограниченная базовая линия, уровень 3.0 [libx264 @ 0x2139060] 264 - ядро ​​142 - кодек H.264 / MPEG-4 AVC - Copyleft 2003-2014 - http://www.videolan.org/x264.html - опции: cabac = 0 ref = 5 deblock = 1 : 0: 0 анализ = 0x1: 0x111 me = umh subme = 8 psy = 1 psy_rd = 1.00: 0.00 mixed_ref = 1 me_range = 16 chroma_me = 1 trellis = 1 8x8dct = 0 cqm = 0 мертвая зона = 21,11 fast_pskip = 1 chroma_qp_offset = -2 потока = 3 lookahead_threads = 1 sliced_threads = 0 nr = 0 decimate = 1 чересстрочный = 0 bluray_compat = 0 constrained_intra = 0 bframes = 0 weightp = 0 keyint = 250 keyint_min = 25 scenecut = 40 intra_refresh = 0 rc_lookahead = 50 rc = crf mbtree = 1 crf = 26.0 qcomp = 0,60 qpmin = 0 qpmax = 69 qpstep = 4 vbv_maxrate = 1500 vbv_bufsize = 3000 crf_max = 0,0 nal_hrd = нет наполнителя = 0 ip_ratio = 1,40 aq = 1: 1,00 Выведите # 0, mp4, в '/root/test/out.mp4': Метаданные: major_brand: isom minor_version: 1 compatibility_brands: isomavc1mp42 кодировщик: Lavf55.33.100 Поток # 0: 0 (und): Видео: h264 (libx264) ([33] [0] [0] [0] / 0x0021), yuv420p, 1920x1080 [SAR 1: 1 DAR 16: 9], q = -1 -1, макс. 1500 кбит / с, 15360 тбн, 30 тбк (по умолчанию) Метаданные: creation_time: 2016-11-03 20:11:08 Отображение потока: Поток № 0: 0 -> # 0: 0 (h264 -> libx264) Нажмите [q], чтобы остановить, [?] Для помощи [mp4 @ 0x21357e0] Начало второго прохода: перемещение атома moov в начало файла кадр = 280 к / с = 8,7 q = -1,0 Lsize = 1861 кБ время = 00: 00: 09,33 битрейт = 1633,7 кбит / с видео: 1859 КБ, аудио: 0 КБ, субтитры: 0 данные: 0 глобальных заголовков: 0 КБ, накладные расходы на мультиплексирование 0,100889% [libx264 @ 0x2139060] кадр I: 2 Ср QP: 36,29 размер: 46508 [libx264 @ 0x2139060] кадр P: 278 Ср QP: 38,34 размер: 6512 [libx264 @ 0x2139060] mb I I16..4: 75,4% 0,0% 24,6% [libx264 @ 0x2139060] mb P I16..4: 0,5% 0,0% 0,2% P16..4: 18,6% 2,7% 1,8% 0,0% 0,0% пропуск: 76,3% [libx264 @ 0x2139060] закодировано y, uvDC, uvAC intra: 31,4% 22,8% 0,3% inter: 2,7% 1,1% 0,0% [libx264 @ 0x2139060] i16 v, h, dc, p: 33% 28% 9% 30% [libx264 @ 0x2139060] i4 v, h, dc, ddl, ddr, vr, hd, vl, hu: 4% 4% 13% 17% 20% 14% 14% 8% 6% [libx264 @ 0x2139060] i8c dc, h, v, p: 85% 7% 7% 1% [libx264 @ 0x2139060] ref P L0: 77,6% 9,9% 8,2% 1,8% 2,5% [libx264 @ 0x2139060] кбит / с: 1631,45 32,378 секунд для завершения 
1
Вы уверены, что делаете правильные сравнения яблок с яблоками? Например, есть два совершенно разных процессора (Xeon и i7), и одно явно настроено на использование нескольких ядер, а другое нет. Проводились ли сравнения ffmpeg 4 и ffmpeg 2 в одной и той же виртуальной машине на одном хосте? jamesdlin 5 лет назад 0
Процессоры разные да - и это может быть фактором - однако сравнения выполняются на одном и том же хосте - и команда ffmpeg была настроена на использование только 1 ядра, сравнительно тест на тех же машинах пропорционально медленнее при установке Xeon / VMware чем локальный i7 / Virtualbox - количество ядер вводит в заблуждение, и я не думаю, что их установка идентична, будет иметь большое значение, однако я проверю, чтобы быть уверенным (то есть, как мы сравнивали сравнение одной версии с другой относительно того же машина). Тестирование снова сегодня. aernative 5 лет назад 0
Я добавил тест на идентичные виртуальные машины, чтобы продемонстрировать суть - посмотрите последние два теста на VMWare с полной детализацией, при запуске на альтернативной установке (virtualbox) происходит обратное. aernative 5 лет назад 0
Полные результаты уже показаны выше, команда была простым транскодом mov в mp4 для веб-воспроизведения - та же команда, использованная в обоих тестах. aernative 5 лет назад 0
`использование возможностей процессора: нет!` указывает на то, что ваша связанная libx264 могла быть скомпилирована с `--disable-asm` или какой-то другой проблемой, из-за которой не использовались оптимизации сборки. LordNeckbeard 5 лет назад 0

1 ответ на вопрос

0
aernative

При тестировании с 4.0.2 проблема исчезла, хотя сейчас она немного быстрее, она далеко не такая же быстрая, как при локальной настройке, но которую мы можем отнести к процессору.

Я могу только заключить, что все, что вызывало замедление, было ограничено этой конкретной версией - (4.0.1).

Хотя это и не ответ на вопрос, в чем причина, поскольку незначительное обновление версии устраняет проблему, я не вижу ошибки в попытке выяснить причину.

Похожие вопросы