Cara menggunakan FFMPEG untuk mengonversi beberapa file media sekaligus di Linux
- 4854
- 1320
- Ian Parker
Objektif
Tulis skrip bash sederhana untuk konversi file batch ffmpeg.
Distribusi
Ini akan bekerja pada semua distribusi Linux.
Persyaratan
Instalasi Linux yang berfungsi dengan FFMPEG terpasang.
Konvensi
- # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan
sudo
memerintah - $ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa
Perkenalan
FFMPEG sangat kuat dalam hal memanipulasi dan mengonversi file media, tetapi kurang memiliki satu fitur penting. FFMPEG tidak memiliki kemampuan untuk menangani banyak file sekaligus. Jadi, apa yang bisa Anda lakukan? Anda adalah pengguna Linux. Anda tidak akan duduk di sana dan mengetikkan secara manual dalam perintah yang sama berulang -ulang, apakah Anda?
FFMPEG sepenuhnya dapat ditulis. Jadi, Anda dapat menulis skrip bash sederhana untuk mengulangi konten direktori yang ditentukan dan melakukan konversi yang Anda inginkan di setiap file. Meskipun itu mungkin terdengar seperti banyak, itu sebenarnya tidak. Script akan kurang dari 20 baris pesta.
Siapkan file
Mulailah dengan menyiapkan file Anda. Jadikan di mana saja yang Anda sukai.
$ touch ffmpeg-batch.SH
Kemudian, buatlah itu dapat dieksekusi.
$ chmod +x ffmpeg-batch.SH
Buka file, dan atur untuk mulai menulis.
#! /bin/bash
Rencanakan variabel Anda
Anda harus meneruskan beberapa argumen ke skrip Anda jika Anda ingin cukup fleksibel untuk menangani sebagian besar skenario yang akan Anda gunakan FFMPEG. Karena itu, Anda akan membutuhkan beberapa variabel. Tentu, Anda dapat menggunakan input mentah, tetapi akan jauh lebih sulit untuk dilacak.
srCext = $ 1 destext = $ 2 srcdir = $ 3 destdir = $ 4 opts = $ 5
Anda memiliki total lima variabel; Ekstensi Sumber, tujuan atau ekstensi yang dihasilkan, direktori sumber, direktori tujuan, dan opsi Anda. Opsi adalah opsi yang Anda inginkan dalam perintah FFMPEG Anda. Ada cara lain untuk melakukan ini, tetapi hanya meneruskannya sebagai string bekerja, dan itu sangat sederhana.
Putaran
Script ini berpusat di sekitar a untuk
Loop untuk mengulangi isi direktori yang ditentukan. Anda perlu membuat loop itu berikutnya. Mulailah dengan hanya mengatur ide.
untuk nama file di folder; lakukan
Tentu saja, MAP
bukan apa -apa. Anda perlu mengatur loop untuk mengulangi isi direktori, dan direktori itu disimpan di srcdir
. Anda juga perlu mengatakan bahwa ia hanya perlu mengulangi file dengan ekstensi tertentu, srcext
. Jadi, kombinasi yang Anda cari terlihat seperti ini:
"$ srcdir"/*.$ SRCEXT
Wildcard (*
) menceritakannya ke semua file, lalu .$ SRCEXT
memberikan ekstensi lengkap untuk dicari. Kutipan itu diperlukan $ srcdir
untuk mencegahnya memperlakukan semuanya sebagai tali dan tidak berfungsi dengan baik.
Semuanya bersama -sama terlihat seperti ini:
Untuk nama file di "$ srcdir"/*.$ srcext; lakukan
Perintah FFMPEG Anda
Anda tahu sintaks FFMPEG dasar, tetapi itu tidak terlalu jauh di sini. Semuanya terdiri dari variabel. Berbicara tentang variabel, Anda akan membutuhkan pasangan lagi. Untuk mendapatkan potongan yang benar untuk folder dan file tujuan, nama file asli harus ditebang dan direorganisasi.
Pertama, buat variabel baru, Basepath
dan setel dengan ekspresi reguler ini: $ fileName%.*
.
Basepath = $ fileName%.*
Ekspresi melucuti segalanya setelah .
dari jalan, yang berarti ekstensi.
Sekarang, Anda perlu menyingkirkan jalan itu sendiri. Untuk melakukan itu, atur nama dasar
sama dengan $ Basepath ##*/
.
Basename = $ Basepath ##*/
Itu mengurus yang lainnya, hingga nama file itu sendiri.
Anda dapat mengumpulkan potongan -potongan untuk membentuk panggilan ke FFMPEG sekarang.
ffmpeg -i "$ filename" $ opts "$ destdir"/"$ basename"."$ destext"
Seperti yang Anda lihat, itu sama dengan panggilan normal ke FFMPEG, tetapi menggunakan variabel. Bagian yang paling rumit adalah tujuan, tetapi hanya menggabungkan bagian -bagian masing -masing tujuan untuk membentuk seluruh jalur dengan nama file dan ekstensi.
Membungkus
Jika Anda mau, Anda dapat menangani pesan sukses saat konversi selesai. Melemparkannya di akhir skrip Anda setelah untuk
lingkaran.
echo "konversi dari $ srCext ke $ destext lengkap!"
Semuanya seharusnya terlihat seperti ini:
#! /bin/bash srcext = $ 1 destext = $ 2 srcdir = $ 3 destdir = $ 4 opts = $ 5 untuk nama file di "$ srcdir"/*.$ srcext; do Basepath = $ fileName%.* Basename = $ Basepath ##*/ ffmpeg -i "$ fileName" $ opts "$ destdir"/"$ basename"."$ destext" done echo "konversi dari $ srCext ke $ destext lengkap!"
Jalankan skrip Anda
Akhirnya, Anda sekarang dapat menjalankan skrip Anda untuk melakukan konversi file batch. Lihatlah contoh ini untuk melihat seperti apa sintaksnya.
$ ffmpeg-batch.sh flac mp3/path/to/file/path/to/dest '-ab 320k'
Itu tidak jauh lebih dari biasanya. Hanya sekarang, Anda mengonversi seluruh file direktori, bukan hanya satu.
Menutup pikiran
Script ini harus cukup fleksibel untuk sebagian besar situasi, dan itu termasuk video. Anda dapat menambahkan skrip ke lokal atau sistem luas tempat sampah
jalur untuk membuatnya lebih mudah diakses dari luar direktorinya.
Tutorial Linux Terkait:
- Hal -hal yang harus diinstal pada ubuntu 20.04
- Ubuntu 20.04 Instalasi FFMPEG
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
- Perintah Linux: 20 perintah terpenting teratas yang Anda butuhkan untuk…
- Cara batch mengonversi file musik dengan ffmpeg
- Unduh Linux
- Pengantar Otomatisasi Linux, Alat dan Teknik
- Distro linux terbaik untuk pengembang
- Perintah Linux Dasar
- File Konfigurasi Linux: 30 Teratas Paling Penting
- « Instal dan mainkan Overwatch di Linux dengan anggur
- Dengarkan stasiun radio favorit Anda dengan satu perintah di Linux »