Cara Menggunakan FFMPEG untuk Menukar Fail Media Berbilang Sekali Pada Linux

Cara Menggunakan FFMPEG untuk Menukar Fail Media Berbilang Sekali Pada Linux

Objektif

Tulis skrip bash ringkas untuk penukaran fail batch ffmpeg.

Pengagihan

Ini akan berfungsi pada semua pengagihan Linux.

Keperluan

Pemasangan Linux yang berfungsi dengan FFMPEG dipasang.

Konvensyen

  • # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
  • $ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Pengenalan

FFMPEG sangat kuat ketika memanipulasi dan menukar fail media, tetapi ia tidak mempunyai satu ciri penting. FFMPEG tidak mempunyai keupayaan untuk mengendalikan pelbagai fail sekaligus. Jadi, apa yang boleh anda lakukan mengenainya? Anda pengguna Linux. Anda tidak akan duduk di sana dan menaip secara manual dalam perintah yang sama berulang kali, adakah anda?

Ffmpeg sepenuhnya boleh ditulis. Oleh itu, anda boleh menulis skrip bash ringkas untuk gelung melalui kandungan direktori yang ditentukan dan melakukan penukaran yang anda inginkan pada setiap fail. Walaupun itu mungkin terdengar seperti banyak, ia sebenarnya tidak. Skrip akan kurang daripada 20 baris bash.

Sediakan fail

Mulakan dengan menyediakan fail anda. Jadikannya di mana sahaja yang anda suka.

$ sentuh ffmpeg-batch.sh

Kemudian, jadikannya boleh dilaksanakan.

$ chmod +x ffmpeg-batch.sh

Buka fail, dan tetapkannya untuk mula menulis.

#! /bin/bash

Rancang pembolehubah anda

Anda perlu lulus pelbagai argumen ke skrip anda jika anda mahu ia cukup fleksibel untuk mengendalikan kebanyakan senario yang anda akan gunakan untuk ffmpeg untuk. Kerana itu, anda akan memerlukan beberapa pembolehubah. Pasti, anda boleh menggunakan input mentah, tetapi akan lebih sukar untuk dijejaki.

srcext = $ 1 destext = $ 2 srcdir = $ 3 destdir = $ 4 opts = $ 5

Anda mempunyai lima pembolehubah secara keseluruhan; lanjutan sumber, destinasi atau lanjutan yang dihasilkan, direktori sumber, direktori destinasi, dan pilihan anda. Pilihan adalah pilihan yang anda mahukan dalam arahan FFMPEG anda. Ada cara lain untuk melakukan ini, tetapi hanya lulus mereka sebagai rentetan berfungsi, dan ia sangat mudah.

Gelung

Skrip ini berpusat di sekitar a untuk gelung untuk melepasi kandungan direktori yang ditentukan. Anda perlu membuat gelung itu seterusnya. Mulakan dengan hanya menyediakan idea.

untuk nama fail dalam folder; selesai

Sudah tentu, Folder tiada apa-apa. Anda perlu menyediakan gelung untuk melepasi kandungan direktori, dan direktori itu disimpan di srcdir. Anda juga perlu memberitahu bahawa ia hanya perlu gelung melalui fail dengan lanjutan tertentu, srcext. Jadi, gabungan yang anda cari kelihatan seperti ini:

"$ srcdir"/*.$ srcext

Kad liar (*) menceritakan kepada semua fail, maka .$ srcext memberikan lanjutan lengkap untuk dicari. Petikan diperlukan di sekitar $ srcdir untuk mengelakkannya daripada merawat semuanya sebagai rentetan dan tidak berfungsi dengan baik.

Seluruh perkara bersama kelihatan seperti ini:

Untuk nama fail dalam "$ srcdir"/*.$ srcext; selesai

Perintah FFMPEG anda

Anda tahu sintaks asas ffmpeg, tetapi itu tidak terlalu jauh di sini. Seluruhnya terdiri daripada pembolehubah. Bercakap tentang pembolehubah, anda memerlukan beberapa lagi. Untuk mendapatkan kepingan yang betul untuk folder dan fail destinasi, nama fail asal perlu dicincang dan disusun semula.

Pertama, buat pemboleh ubah baru, BASEPATH dan tetapkannya sama dengan ungkapan biasa ini: $ filename%.*.

BasePath = $ FileName%.*

Ungkapan -ungkapannya meluluskan segala -galanya selepas . dari jalan, yang bermaksud lanjutan.

Sekarang, anda perlu menyingkirkan jalan itu sendiri. Untuk melakukan itu, tetapkan Nama bas sama dengan $ BasePath ##*/.

Basename = $ BasePath ##*/

Yang menjaga semua perkara lain, sehingga nama fail itu sendiri.

Anda boleh menyusun kepingan untuk membentuk panggilan ke ffmpeg sekarang.

ffmpeg -i "$ filename" $ ​​opts "$ destdir"/"$ Basename"."$ destext"

Seperti yang anda lihat, ia sama dengan panggilan biasa ke ffmpeg, tetapi menggunakan pembolehubah. Sekeping yang paling rumit adalah destinasi, tetapi ia hanya menggabungkan kepingan individu destinasi untuk membentuk keseluruhan jalan dengan nama fail dan lanjutan.

Mengakhiri

Sekiranya anda mahu, anda boleh membuat mesej kejayaan apabila penukaran selesai. Buangnya pada akhir skrip anda selepas untuk gelung.

echo "penukaran dari $ srcext hingga $ destext lengkap!"

Seluruhnya harus kelihatan seperti ini:

#! /bin/bash srcext = $ 1 destext = $ 2 srcdir = $ 3 destdir = $ 4 opts = $ 5 untuk nama fail dalam "$ srcdir"/*.$ srcext; Adakah BasePath = $ FileName%.* baseName = $ BasePath ##*/ ffmpeg -i "$ filename" $ ​​opts "$ destdir"/"$ Basename"."$ DeStext" Done Echo "penukaran dari $ srcext hingga $ destext lengkap!"

Jalankan skrip anda

Akhirnya, anda kini boleh menjalankan skrip anda untuk melakukan penukaran fail batch. Lihat contoh ini untuk melihat bagaimana sintaks.

$ ffmpeg-batch.sh flac mp3/path/to/files/path/to/dest '-ab 320k'

Ia bukan semua yang lebih baik daripada biasa. Hanya sekarang, anda menukarkan keseluruhan fail nilai direktori, bukan hanya satu.

Pemikiran penutupan

Skrip ini cukup fleksibel untuk kebanyakan situasi, dan itu termasuk video. Anda boleh menambahkan skrip ke tempatan atau sistem yang luas bin jalan untuk menjadikannya lebih mudah diakses dari luar direktori.

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Ubuntu 20.04 Pemasangan FFMPEG
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Perintah Linux: Top 20 Perintah Paling Penting yang Anda Perlu ..
  • Cara Batch Menukar Fail Muzik dengan FFMPEG
  • Muat turun linux
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Distro linux terbaik untuk pemaju
  • Perintah Linux Asas
  • Fail Konfigurasi Linux: 30 teratas yang paling penting