Cara menggunakan FFMPEG untuk mengonversi beberapa file media sekaligus di Linux

Cara menggunakan FFMPEG untuk mengonversi beberapa file media sekaligus di Linux

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