FFmpeg 4 so với phiên bản 2.2 chuyển mã rất chậm trong bộ chứa VMWare CentOS 6


1

Khi sử dụng "ffmpeg phiên bản n4.0.1", tôi nhận thấy rằng trên máy chủ CentOS6 trong bộ chứa VMware, quá trình chuyển mã video mất gần gấp đôi so với "phiên bản ffmpeg 2.2.1".

Điểm chuẩn bên dưới, chạy 3 lần lặp, thời gian nhanh nhất chỉ bên dưới.

Tập tin được thử nghiệm là cùng một video chứng khoán 2,8mb.

Tất cả máy ảo đang chạy phiên bản CentOS 6.10.

| VM         | FFMpeg version| Time      |
| Virtualbox |         4.0.1 | 11 secs   |
| Virtualbox |         2.2.1 | 18 secs   |
| VMWare     |         2.2.1 | 29 secs   |
| VMWare     |         4.0.1 | 1 minuite |

Tôi thực sự không biết tại sao điều này lại khác biệt và không thể tìm thấy bất kỳ lý do hợp lý nào cho việc này - bất kỳ quan tài FFMpeg / VMWare nào ngoài đó có bất kỳ manh mối nào đang xảy ra không?

4.01 được tổng hợp từ nguồn, 2.2.1 theo EPEL.

Chỉ cần thêm - thông tin cpu VMWare như sau -

processor    : 0
vendor_id    : GenuineIntel
cpu family    : 6
model        : 62
model name    : Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
stepping    : 4
microcode    : 1064
cpu MHz        : 2100.000
cache size    : 15360 KB
physical id    : 0
siblings    : 1
core id        : 0
cpu cores    : 1
apicid        : 0
initial apicid    : 0
fpu        : yes
fpu_exception    : yes
cpuid level    : 13
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm arat epb xsaveopt pln pts dtherm pti retpoline fsgsbase smep
bogomips    : 4200.00
clflush size    : 64
cache_alignment    : 64
address sizes    : 40 bits physical, 48 bits virtual
power management:

Thông tin về CPU VirtualBox của Versus được báo cáo là

rocessor    : 0
vendor_id    : GenuineIntel
cpu family    : 6
model        : 158
model name    : Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz
stepping    : 9
cpu MHz        : 2903.925
cache size    : 8192 KB
physical id    : 0
siblings    : 2
core id        : 0
cpu cores    : 2
apicid        : 0
initial apicid    : 0
fpu        : yes
fpu_exception    : yes
cpuid level    : 22
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good xtopology nonstop_tsc pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx rdrand lahf_lm abm 3dnowprefetch fsgsbase avx2 invpcid rdseed
bogomips    : 5807.85
clflush size    : 64
cache_alignment    : 64
address sizes    : 39 bits physical, 48 bits virtual
power management:

Những điều trên chứng tỏ rằng phiên bản mới hơn hoạt động tốt hơn và kém hơn trên các kiến ​​trúc khác nhau.

Để rõ ràng 100% tôi đã chạy lại một số điểm chuẩn bên dưới - đây là VM khác nhau trong cùng một đám mây với các thiết lập giống hệt nhau -

FFMPeg 4 - 122.861 giây

[root@proofing test]# ./benchmark.sh
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 62
model name  : Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
stepping    : 4
microcode   : 1064
cpu MHz     : 2100.000
cache size  : 15360 KB
physical id : 0
siblings    : 1
core id     : 0
cpu cores   : 1
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm arat epb xsaveopt pln pts dtherm pti retpoline fsgsbase smep
bogomips    : 4200.00
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 62
model name  : Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
stepping    : 4
microcode   : 1064
cpu MHz     : 2100.000
cache size  : 15360 KB
physical id : 2
siblings    : 1
core id     : 0
cpu cores   : 1
apicid      : 2
initial apicid  : 2
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm arat epb xsaveopt pln pts dtherm pti retpoline fsgsbase smep
bogomips    : 4200.00
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

ffmpeg version n4.0.1 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-23)
  configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --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
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/root/test/test.mov':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isomavc1mp42
    creation_time   : 2016-11-03T20:11:18.000000Z
  Duration: 00:00:09.33, start: 0.000000, bitrate: 20807 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 20805 kb/s, 30 fps, 30 tbr, 30 tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2016-11-03T20:11:08.000000Z
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x2d05c40] using SAR=1/1
[libx264 @ 0x2d05c40] frame MB size (120x68) > level limit (1620)
[libx264 @ 0x2d05c40] DPB size (1 frames, 3133440 bytes) > level limit (0 frames, 3110400 bytes)
[libx264 @ 0x2d05c40] MB rate (244800) > level limit (40500)
[libx264 @ 0x2d05c40] using cpu capabilities: none!
[libx264 @ 0x2d05c40] profile Constrained Baseline, level 3.0
[libx264 @ 0x2d05c40] 264 - core 120 r2151 a3f4407 - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=1:0:0 analyse=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 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=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=none ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to '/root/test/out.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isomavc1mp42
    encoder         : Lavf58.12.100
    Stream #0:0(und): Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 30 fps, 15360 tbn, 30 tbc (default)
    Metadata:
      creation_time   : 2016-11-03T20:11:08.000000Z
      encoder         : Lavc58.18.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 1500000/0/0 buffer size: 3000000 vbv_delay: -1
[mp4 @ 0x2d04680] Starting second pass: moving the moov atom to the beginning of the file.0726x
frame=  280 fps=2.3 q=-1.0 Lsize=    1865kB time=00:00:09.30 bitrate=1642.5kbits/s speed=0.0757x
video:1863kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.103491%
[libx264 @ 0x2d05c40] frame I:2     Avg QP:37.09  size: 36746
[libx264 @ 0x2d05c40] frame P:278   Avg QP:38.97  size:  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%    skip:77.7%
[libx264 @ 0x2d05c40] coded 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] kb/s:1634.35
122.861 seconds to complete

FFMpeg 2 - 32.378 giây

[root@staging test]# ./benchmark.sh
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 62
model name  : Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
stepping    : 4
microcode   : 1064
cpu MHz     : 2100.000
cache size  : 15360 KB
physical id : 0
siblings    : 1
core id     : 0
cpu cores   : 1
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm arat epb xsaveopt pln pts dtherm pti retpoline fsgsbase smep
bogomips    : 4200.00
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 62
model name  : Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
stepping    : 4
microcode   : 1064
cpu MHz     : 2100.000
cache size  : 15360 KB
physical id : 2
siblings    : 1
core id     : 0
cpu cores   : 1
apicid      : 2
initial apicid  : 2
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm arat epb xsaveopt pln pts dtherm pti retpoline fsgsbase smep
bogomips    : 4200.00
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

ffmpeg version 2.2.1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Apr 13 2014 13:00:18 with gcc 4.4.6 (GCC) 20120305 (Red Hat 4.4.6-4)
  configuration: --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 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -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
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/root/test/test.mov':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isomavc1mp42
    creation_time   : 2016-11-03 20:11:18
  Duration: 00:00:09.33, start: 0.000000, bitrate: 20807 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 20805 kb/s, 30 fps, 30 tbr, 30 tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2016-11-03 20:11:08
[libx264 @ 0x2139060] using SAR=1/1
[libx264 @ 0x2139060] frame MB size (120x68) > level limit (1620)
[libx264 @ 0x2139060] DPB size (5 frames, 40800 mbs) > level limit (0 frames, 8100 mbs)
[libx264 @ 0x2139060] MB rate (244800) > level limit (40500)
[libx264 @ 0x2139060] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x2139060] profile Constrained Baseline, level 3.0
[libx264 @ 0x2139060] 264 - core 142 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=0 ref=5 deblock=1:0:0 analyse=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 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 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=none filler=0 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to '/root/test/out.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isomavc1mp42
    encoder         : Lavf55.33.100
    Stream #0:0(und): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, max. 1500 kb/s, 15360 tbn, 30 tbc (default)
    Metadata:
      creation_time   : 2016-11-03 20:11:08
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)
Press [q] to stop, [?] for help
[mp4 @ 0x21357e0] Starting second pass: moving the moov atom to the beginning of the file
frame=  280 fps=8.7 q=-1.0 Lsize=    1861kB time=00:00:09.33 bitrate=1633.7kbits/s
video:1859kB audio:0kB subtitle:0 data:0 global headers:0kB muxing overhead 0.100889%
[libx264 @ 0x2139060] frame I:2     Avg QP:36.29  size: 46508
[libx264 @ 0x2139060] frame P:278   Avg QP:38.34  size:  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%    skip:76.3%
[libx264 @ 0x2139060] coded 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] kb/s:1631.45
32.378 seconds to complete

Bạn có chắc là bạn đang thực hiện các so sánh táo đúng không? Ví dụ, có hai CPU hoàn toàn khác nhau (Xeon so với i7) và một CPU được cấu hình rõ ràng để sử dụng nhiều lõi trong khi một lõi thì không. Các phép so sánh ffmpeg 4 vs ffmpeg 2 có được thực hiện trong cùng một VM trên cùng một máy chủ không?
jamesdlin

CPU có khác nhau - và đó có thể là một yếu tố - tuy nhiên các phép so sánh nằm trên cùng một máy chủ - và lệnh ffmpeg được đặt để chỉ sử dụng 1 lõi, so với thử nghiệm trên cùng một máy thì chậm hơn tương ứng trên thiết lập Xeon / VMware so với i7 / Virtualbox cục bộ - số lượng lõi bị sai lệch và tôi không nghĩ rằng việc thiết lập chúng giống hệt nhau sẽ tạo ra nhiều khác biệt, tuy nhiên tôi sẽ kiểm tra để chắc chắn (ví dụ như khi nhìn vào so sánh một phiên bản với phiên bản khác so sánh máy móc). Kiểm tra lại ngày hôm nay.
aernative

Tôi đã thêm một thử nghiệm trên các máy ảo giống hệt nhau để chứng minh điểm - xem hai thử nghiệm mới nhất trên VMWare với đầy đủ chi tiết, khi chạy trên thiết lập thay thế (hộp ảo) thì ngược lại.
aernative

Các đầu ra đầy đủ đã được hiển thị ở trên, lệnh là một chuyển mã đơn giản của một chuyển sang mp4 để phát lại web - cùng một lệnh được sử dụng trong cả hai thử nghiệm.
aernative

using cpu capabilities: none! chỉ ra rằng libx264 được liên kết của bạn có thể đã được biên dịch với --disable-asm hoặc một số vấn đề khác khiến nó không sử dụng tối ưu hóa lắp ráp.
llogan

Câu trả lời:


0

Thử nghiệm với 4.0.2 vấn đề đã biến mất, trong khi hiện tại nó nhanh hơn một chút so với thiết lập cục bộ nhưng chúng ta có thể đưa xuống CPU.

Tôi chỉ có thể kết luận rằng bất cứ điều gì gây ra sự chậm lại là giới hạn trong phiên bản cụ thể đó - (4.0.1).

Mặc dù đây không phải là câu trả lời cho nguyên nhân là gì vì bản cập nhật phiên bản nhỏ đã khắc phục được sự cố.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.