Saya menggunakan perintah berikut untuk mengkonversi format m4a ke mp3
ffmpeg -i audio.m4a -acodec libmp3lame audio.mp3
Saya memiliki 32 x86 core, namun proses libmp3lame dalam satu utas. Saya tahu libmp3lame tidak mendukung multithreading, jadi saya terbuka untuk alternatif lain yang dapat dijalankan di CLI ubuntu.
Jika audio.m4a adalah video berdurasi 2 jam, biasanya dibutuhkan> 3 menit dan kecepatan tampaknya 45x hingga 50x.
Tujuan utama saya adalah untuk mengkonversi beberapa video youtube dalam format mp3 dalam hitungan detik.
Pembaruan 1:
Karena saya menggunakan CPU 32 core, ketika hanya ada satu konversi video, ia hanya menggunakan satu inti. Jadi dalam hal ini bagaimana menggunakan beberapa core, untuk mendapatkan output lebih cepat. Saya ingin mencapai maksimum dari CPU. Juga jika FFmpeg bukan jawabannya, apakah ada cara lain.
Jawaban:
Karena encoder adalah single-threaded saja, untuk membuat encoding yang paling efisien pada sistem multi-core, yang dapat Anda lakukan adalah meluncurkan beberapa proses secara paralel.
Misalnya, jika Anda menggunakan shell:
The
&
menempatkan perintah ke latar belakang . Perintah akan dijalankan secara paralel dan beban harus didistribusikan di antara inti CPU Anda.sumber
GNU Parallel terdengar persis seperti apa yang Anda cari.
Berikut ini adalah contoh bagaimana Anda dapat menggunakan GNU Parallel (dengan asumsi Anda sudah memiliki direktori dengan semua
*.m4a
file Andavideos
) menggunakan perintah asli Anda:Dua hal untuk dijelaskan:
1 : Output dari
find
perintah (yaitu daftar.m4a
file yang akan dikonversi) akan disalurkan keparallel
perintah, yang pada gilirannya (secara default) akan melakukan pekerjaan sebanyak yang ada core . Intinya adalah memisahkan output darifind
perintah, dan mendistribusikannya di berbagai pekerjaan untuk dikerjakan .2 : Per Tutorial Paralel GNU ,
{}
adalah tempat argumen Anda akan muncul,{.}
akan menggantikan argumen Anda dan menghapus ekstensi terminal (dalam hal ini.m4a
), dan output Anda akan menjadi nama file asli tetapi dengan.mp3
ekstensi.CATATAN : Contoh ini akan menulis semua file Anda yang dikonversi ke tempat file asli Anda. Jika ini merupakan masalah, maka hanya lewat direktori untuk menyimpan file yang dikonversi dalam string argumen yang berisi
ffmpeg
perintah:sumber
ls
untuk menghasilkan nama file untuk proses lain untuk digunakan (atau menyarankan orang untuk melakukannya).Ada implementasi multi-threaded dari encoder mp3 lumpuh di internet. Saya bisa melacak satu di sini
https://github.com/dheller1/lame_pthreads
Jika Anda memiliki ruang penyimpanan yang besar, Anda bisa menggunakan ffmpeg untuk mengubah semua file m4a menjadi file wav dan kemudian mengarahkan lame_pthreads ke folder itu.
sumber