Cara batch mengonversi file musik dengan ffmpeg

Cara batch mengonversi file musik dengan ffmpeg

FFMPEG adalah inti dari banyak utilitas multimedia, tetapi utilitas itu sendiri tidak memiliki kemampuan untuk mengonversi banyak file sekaligus. Untungnya, FFMPEG bisa skrip, dan Anda dapat dengan mudah mengatur sesuatu dengan cepat dengan bash.

Dalam tutorial ini Anda akan belajar:

  • Cara Mengatur Variabel Anda
  • Cara membangun loop
  • Cara menghapus nama file
  • Bagaimana menggabungkan semuanya, dan berlari
Batch mengonversi file audio dengan ffmpeg.

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Distribusi apa pun dengan FFMPEG
Perangkat lunak Ffmpeg
Lainnya Akses istimewa ke sistem Linux Anda sebagai root atau melalui sudo memerintah.
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
  1. Siapkan variabel Anda

    Satu -satunya cara nyata untuk menangani konversi file batch dengan FFMPEG adalah melalui skrip bash. Tidak perlu menjadi sangat kompleks atau detail, tetapi Anda bisa, jika Anda menyukai sord itu, menjadi sangat rinci dengan itu. Panduan ini akan bekerja dengan sesuatu yang lebih sederhana yang menyelesaikan pekerjaan.

    Pertama, buat file untuk skrip Anda.



    Sentuh FFMPEG-Batch.SH

    Selanjutnya, buka dengan editor teks favorit Anda, dan atur sebagai skrip bash.

    #! /bin/bash

    Skrip ini akan menggunakan serangkaian variabel untuk jalur file, ekstensi, dan opsi FFMPEG. Dengan cara ini, cukup fleksibel sehingga Anda dapat meneruskannya file yang berbeda di lokasi yang berbeda, memilih format file Anda saat Anda pergi.

    Ada lima variabel yang Anda butuhkan. Anda akan membutuhkan satu untuk masing -masing direktori input dan direktori output. Kemudian, Anda akan memerlukan set untuk ekstensi file input dan lainnya untuk ekstensi output. Akhirnya, Anda dapat membuat satu yang merupakan tangkapan umum untuk opsi konversi Anda. Secara keseluruhan, itu harus terlihat seperti ini:

    srCext = $ 1 destext = $ 2 srcdir = $ 3 destdir = $ 4 opts = $ 5
    Menyalin

    Jika Anda ingin memodifikasinya, teruskan ke depan. Ekstensi diperlukan, daripada hanya menariknya dari file karena folder mungkin berisi lebih dari satu jenis file. Jika Anda lebih suka berasumsi bahwa hanya ada satu jenis file di folder, teruskan dan ubah skrip untuk bekerja seperti itu.

  2. Bangun loop

    Segala sesuatu dalam skrip ini terjadi melalui yang sederhana depan lingkaran. Ini akan mengulangi setiap file dengan ekstensi yang ditentukan di direktori yang ditentukan.

    Untuk nama file di "$ srcdir"/*.$ srcext; lakukan
    Menyalin
  3. Lepaskan nama file

    Untuk membuat skrip benar -benar mudah beradaptasi, Anda harus menghapus jalur dan ekstensi setiap file untuk mendapatkan nama file sebagaimana adanya. Dengan cara ini, skrip akan dapat mengekspor file yang baru dikonversi dengan nama yang identik, menghilangkan kebutuhan Anda untuk menentukan atau mengganti nama secara individual.

    Pertama, cuplikan ekstensi dan tetapkan itu ke variabel baru.

    Untuk nama file di "$ srcdir"/*.$ srcext; Mengerjakan

    Kemudian, lepaskan jalur dari nama file.

    Basename = $ Basepath ##*/

    Anda dapat mencoba menggemakan hasilnya untuk melihat apa yang Anda dapatkan. Itu seharusnya hanya nama file itu sendiri.

    Echo $ Basename
  4. Satukan semuanya, dan lari

    Anda akhirnya siap untuk menambahkan pekerjaan nyata dari FFMPEG. Bagian ini pada dasarnya hanyalah panggilan sederhana ke FFMPEG, tetapi bekerja dengan variabel Anda sebagai pengganti nama file literal. Beri FFMPEG nama file lengkap dengan jalur sebagai inputnya. Kemudian, buat output menggunakan direktori tujuan, nama file yang dilucuti, dan ekstensi file tujuan. Sertakan pilihan Anda di antaranya. Kutipan diperlukan untuk bash untuk memperlakukan setiap variabel sebagai string.

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

    Anda dapat menambahkan pesan setelah loop, konvensi bahwa file berhasil dikonversi. Secara keseluruhan, skrip Anda harus 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!"
    Menyalin

    Tidak banyak yang terjadi, tetapi skripnya cukup untuk menangani sebagian besar situasi. Sekarang, menjalankannya akan terlihat seperti ini:

    ./ffmpeg-batch.sh flac mp3/home/username/music/'led zeppelin'/'led zeppelin'//home/username/music/'led zeppelin mp3'/"-ab 320k"

Kesimpulan

Setelah Anda terbiasa, bahkan sesuatu seperti ini bisa menjadi cara yang sangat berguna untuk mengelola audio Anda, dan bahkan video, file. FFMPEG adalah alat yang sangat baik, dan jika Anda lebih suka minimalis, Anda bisa mendapatkan hasil yang sama dengan program grafis yang membengkak dengan perintah satu baris.

Tutorial Linux Terkait:

  • Menguasai loop skrip bash
  • Distribusi Linux multimedia terbaik
  • Pemutar Musik Terbaik untuk Linux
  • Ubuntu 20.04 Instalasi FFMPEG
  • Loop bersarang dalam skrip bash
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Cara membuat paket flatpak
  • Tutorial debugging GDB untuk pemula
  • Cara mendapatkan dan mengubah metadata audio di linux