avconv pada banyak utas

9

Apakah mungkin menjalankan pekerjaan pada banyak prosesor atau utas untuk mempercepat avconv?
Apakah ada fitur yang sedang berjalan, jika tidak saya bertanya-tanya mengapa?

Shubham Chaudhary
sumber

Jawaban:

11

Anda mencari opsi -threads dari avconv. Pengaturan teraman adalah:

 -threads auto

tetapi Anda juga dapat mengatur bilangan bulat di sana jika Anda ingin bereksperimen sedikit. FFmpeg modern (sekarang standar di Ubuntu) menetapkan ini secara auto default seperti yang terlihat di bagian halaman man 'ffmpeg-all':

threads integer (decoding/encoding,video)

Set the number of threads to be used, in case the selected
codec implementation supports multi-threading.

  Possible values:

     auto, 0
     automatically select the number of threads to set

 Default value is auto.

Perhatikan 2 poin penting:

  1. Pengaturan ini hanya akan berpengaruh jika codec yang dipilih mendukung multi-threading
  2. Dimungkinkan untuk mengatur jumlah utas untuk masing-masing aliran daripada sekadar mencoba pengaturan utas global
andrew.46
sumber
1
Perbaiki saya jika Anda memiliki sumber yang bertentangan, tetapi saya mendapat kesan bahwa Avconv dan avplay masih menggunakan auto -threads sebagai default jika tidak ditentukan. Monitor sistem tampaknya mendukung ini.
Penatua Geek
1
Saya percaya bahwa itu tergantung pada codec yang digunakan untuk transcoding. Ini bisa diuji secara formal yang pasti akan membuat tes yang menarik. Informasi yang saya dapat temukan pada masalah online tidak terlalu membantu. Masalah lain adalah versi FFmpeg yang digunakan, opsi utas telah digunakan secara berbeda di versi yang lebih lama ...
andrew.46
1
Iya. FFmpeg dan avconv telah bergerak ke arah yang agak berbeda sejak garpu. Penelitian lebih lanjut menunjukkan bahwa auto -threads adalah default di avconv jika Anda menggunakan salah satu preset pada baris perintah.
Penatua Geek
3

Jika Anda melakukan transcoding audio dari banyak file, lihat menggunakan GNU Parallel. Ini akan mengambil daftar file sebagai input dan memprosesnya secara paralel berdasarkan jumlah core di sistem Anda. Sebagai contoh, berikut adalah contoh bash yang akan mengubah musik menjadi format audio opus secara paralel menggunakan ffmpeg.

find ./* -depth -type f -name \*.ogg -o -name \*.flac -o -name \*.m4a -o -name \*.mp3 -o -name \*.ogg | parallel -j+0 --gnu nice -n 19 ffmpeg -i "{}" -acodec libopus "{.}.opus" -loglevel quiet
mmstick
sumber