Cara Menggunakan FFMPEG untuk Menukar Fail Media Berbilang Sekali Pada Linux
- 4775
- 1108
- Dana Hammes
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
- « Pasang dan mainkan Overwatch di Linux dengan Wain
- Dengarkan stesen radio kegemaran anda dengan satu arahan di Linux »