Saya memiliki 2 instance ffmpeg terpisah pada mesin macOS saya (10.14.2 Mojave dan Intel Core i5-8259U Quad-core CPU @ 2.30GHz, jika itu membantu):
1 - Diinstal dengan brew (dan ditautkan dengan dylib lokal saya)
2 - Bangun statis yang diunduh dari ffmpeg Zeranoe
Keduanya v4.1. Tapi, ketika transcoding file yang sama (OGG -> MP3) dengan opsi perintah yang sama, dengan beban sistem yang sama, dan semua yang lain sama ... instance # 1 kira-kira 3x lebih cepat daripada instance # 2. Saya perlu tahu mengapa karena saya harus membundel ffmpeg statis dengan aplikasi saya, dan perlu berkinerja optimal . Lihat output perintah di bawah ini:
Instance ffmpeg yang lebih cepat (Perhatikan kecepatannya adalah 46.5x):
$ ffmpeg -v quiet -stats -i ~/Reiki2.ogg -vn -sn ~/Reiki2.mp3
size= 26290kB time=00:28:02.54 bitrate= 128.0kbits/s speed=46.5x
Instance ffmpeg yang lebih lambat (Perhatikan kecepatannya adalah 17.2x)
$ ./ffmpeg -v quiet -stats -i ~/Reiki2.ogg -vn -sn ./Reiki2.mp3
size= 26290kB time=00:28:02.54 bitrate= 128.0kbits/s speed=17.2x
Mengapa perbedaan besar dalam kinerja ???
Jika saya mengetahuinya, saya kemudian dapat membangun ffmpeg sendiri dengan kinerja yang dioptimalkan yang cocok dengan ffmpeg yang diinstal lebih cepat (yaitu # 1).
Apakah ini cara kedua instance dikonfigurasikan sebelum membuatnya ? Apakah Anda melihat opsi konfigurasi signifikan yang menjadi alasan perbedaan kinerja yang sangat besar ini?
Saya sangat ingin mengetahui hal ini karena aplikasi saya tergantung pada kinerja ffmpeg. Saya akan sangat menghargai wawasan apa pun. Terima kasih sebelumnya !
Mesin virtual # 1 (lebih cepat) dikonfigurasikan sebagai berikut:
ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1 --enable-shared
--enable-pthreads --enable-version3 --enable-hardcoded-tables
--enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay
--enable-gpl --enable-libmp3lame --enable-libopus --enable-libsnappy
--enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264
--enable-libx265 --enable-libxvid --enable-lzma --enable-opencl
--enable-videotoolbox
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Mesin virtual # 2 (lebih lambat) dikonfigurasikan sebagai berikut:
ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
configuration: --enable-gpl --enable-version3 --enable-sdl2
--enable-fontconfig --enable-gnutls --enable-iconv --enable-libass
--enable-libbluray --enable-libfreetype --enable-libmp3lame
--enable-libopencore-amrnb --enable-libopencore-amrwb
--enable-libopenjpeg --enable-libopus --enable-libshine
--enable-libsnappy --enable-libsoxr --enable-libtheora
--enable-libtwolame --enable-libvpx --enable-libwavpack
--enable-libwebp --enable-libx264 --enable-libx265
--enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib
--enable-gmp --enable-libvidstab --enable-libvorbis
--enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex
--enable-libxvid --enable-libaom --enable-appkit
--enable-avfoundation --enable-coreimage --enable-audiotoolbox
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
------ PEMBARUAN: ------
1 - Saya mencoba membuat libmp3lame sendiri dengan --enable-nasm dan kemudian ffmpeg menggunakan lame bawaan. Tidak ada perbedaan yang diperhatikan ... masih lambat.
2 - Saya menjalankan tes transcoding yang sama pada Mac yang jauh lebih tua, dan hasilnya hampir identik (diperkecil karena komputernya lebih lambat).
yaitu libmp3lame jelas merupakan masalah!
Jadi, saya telah memutuskan, untuk aplikasi saya, bahwa saya akan menggunakan solusi - Saya hanya akan lebih suka transcoding ke AAC daripada MP3. Transcoding AAC sangat cepat pada semua instance ffmpeg saya dan aplikasi saya mendukung AAC dengan baik. Saya juga akan terus menyelidiki masalah lambatnya libmp3lame, tetapi untuk sekarang, saya membuka blokir aplikasi saya.
Terima kasih semua atas bantuannya! (Terima kasih khusus kepada @Gyan dan @ llogan)
aac
? Juga, encoding video?Jawaban:
Ini kemungkinan adalah bug dari LAME
# 491 lumpuh 3.100 lebih lambat dari 3.99.5
Saya memberi tahu Zeranoe dan johnvansickle.com tentang ini. John mengatakan ini akan diperbaiki dengan rilis git-nya pada 20 Desember. Dia mengatakan dia mengkompilasi lumpuh dengan
CFLAGS="-O3" CPPFLAGS="-DNDEBUG"
menghasilkan speedup 3x.Waspadai nasm
Mengaktifkan nasm tampaknya membuat perbedaan yang signifikan untuk 3.100 dibandingkan dengan 3.99.5 dalam tes malas saya di Arch Linux.
Baik Zeranoe dan John mengkompilasi lumpuh
--enable-nasm
, sehingga kelambatan pada build mereka disebabkan oleh bug yang disebutkan sebelumnya.sumber