Bagaimana Anda mengonversi seluruh direktori / folder dengan ffmpeg melalui baris perintah atau dengan skrip batch?
ffmpeg
batch-processing
Eugene
sumber
sumber
i was unexpected at this time.
do name=`echo "${i%.*}"`;
akan bekerja pada nama file dengan titik (dan spasi) di dalamnya..bat
di windows?Untuk Linux dan macOS ini dapat dilakukan dalam satu baris, menggunakan ekspansi parameter untuk mengubah ekstensi nama file dari file output:
sumber
ffmpeg
tidak dapat menginput dan output ke file yang sama. 2) Saya tidak yakin apakah perintah Bash bekerja pada Windows 10 secara asli. Mungkin saya harus menambahkan jawaban yang ditargetkan ke sistem yang dapat menggunakan Bash seperti Linux dan macOS. lxs memberikan jawaban Windows untuk pertanyaan ini.for f in *.mkv; do ffmpeg -i "$f" -map 0 -movflags faststart -c:v libx264 -c:a copy -c:s copy "${f/x265/x264}"; done
Dan di Windows:
sumber
FOR /F "tokens=*" %G IN ('dir /b *.mp3') DO ffmpeg -i "%G" -map_metadata -1 -c:v copy -c:a copy "%~nG .mp3"
Script bash satu baris akan mudah dilakukan - ganti
*.avi
dengan tipe file Anda:sumber
-qscale
. Hapus dan gunakan pengaturan default, atau gunakan-crf
sebagai gantinya (standarnya adalah-crf 23
).basename
tidak dikutip. Inilah sebabnya mengapa bash memiliki ekspansi shell: untuk i in * .avi; do ffmpeg -i "$ i" -qscale 0 "$ (basename" $ i ".avi)". mov; selesaiUntuk mengkonversi dengan subdirektori, gunakan misalnya
sumber
find -name "*.vtt" -exec ffmpeg -i {} {}.srt \;
find *.mp4 -exec ffmpeg -i {} {}.mp3 \;
find . -name *.ogg -or -name *.wma -exec ffmpeg -i {} {}.mp3 \;
find . -name *.wma -exec ffmpeg -i {} {}.mp3 \; -exec rm {} \;
Untuk Windows:
Di sini saya Konversi semua file (.mp4) menjadi file (.mp3).
Cukup buka cmd, buka folder yang diinginkan dan ketik perintah.
Pintasan: (opsional)
1. Buka folder tempat file (.mp4) Anda ada
2. Tekan Shift dan klik kiri dan Pilih "Buka PowerShell Window Here"
atau "Open Command Prompt Window Here"
3. Ketik "cmd" [CATATAN : Lewati langkah ini jika langsung membuka cmd alih-alih PowerShell]
4. Jalankan perintah
Jika Anda ingin memasukkan ini ke file batch pada Windows 10, Anda harus menggunakan %% i.
sumber
Bagi siapa saja yang ingin melakukan batch konversi apa pun dengan ffmpeg tetapi ingin memiliki antarmuka Windows yang nyaman, saya mengembangkan front-end ini:
https://sourceforge.net/projects/ffmpeg-batch
Ini menambah ffmpeg antarmuka mode jendela, bilah kemajuan dan info sisa waktu, fitur yang selalu saya lewatkan saat menggunakan ffmpeg.
sumber
Jika Anda memiliki GNU parallel, Anda dapat mengonversi semua file .avi di bawah ini
vid_dir
ke mp4 secara paralel, menggunakan semua kecuali salah satu inti CPU Anda denganUntuk mengonversi dari / ke berbagai format, ubah
'*.avi'
atau.mp4
sesuai kebutuhan. Paralel GNU terdaftar di sebagian besar repositori distribusi Linux dalam sebuah paket yang biasa disebutparallel
.sumber
!
ujung bash one-liners?Saya tahu ini mungkin berlebihan tetapi saya menggunakan skrip ini untuk mengonversi file batch.
Dibutuhkan 2 argumen untuk membuatnya lebih fleksibel:
Saya membuat alias untuk itu tetapi Anda juga dapat menggunakannya secara manual seperti ini:
Ini akan mengubah semua
mkv
file menjadimp4
file.Seperti yang Anda lihat, itu sedikit lebih fleksibel. Selama
ffmpeg
dapat mengonversinya, Anda dapat menentukan dua ekstensi.sumber
Mendapatkan sedikit seperti golf kode di sini, tetapi karena hampir semua jawaban sejauh ini adalah bash (kecuali satu cmd yang kesepian), inilah perintah lintas platform
windowsyang menggunakan PowerShell (karena mengagumkan):Anda dapat mengubah * .avi menjadi apa pun yang cocok dengan rekaman sumber Anda.
sumber
Tentu saja, sekarang PowerShell telah hadir, yang dirancang khusus untuk membuat sesuatu yang persis seperti ini menjadi sangat mudah.
Dan, ya, PowerShell juga tersedia pada sistem operasi lain selain Windows, tetapi sudah diinstal sebelumnya pada Windows, jadi ini harus bermanfaat bagi semua orang.
Pertama, Anda ingin membuat daftar semua file dalam direktori saat ini, jadi, kami akan mulai dengan:
Anda juga dapat menggunakan
ls -Recurse
jika Anda ingin mengonversi semua file dalam subdirektori secara rekursif juga.Kemudian, kami akan memfilternya hanya ke jenis file yang ingin kami konversi - mis. "Avi".
Setelah itu, kami akan meneruskan informasi itu ke FFmpeg melalui a
ForEach
.Untuk input FFmpeg, kita akan menggunakan
FullName
- itulah keseluruhan path ke file. Dan untuk output FFmpeg ini kita akan menggunakanName
- tapi menggantikan yang.avi
pada akhir dengan.mp3
. Jadi, akan terlihat seperti ini:Jadi, mari kita kumpulkan semuanya dan inilah hasilnya:
Itu akan mengkonversi semua file ".avi" menjadi file ".mp3" melalui FFmpeg, cukup ganti tiga hal dalam tanda kutip untuk memutuskan jenis konversi yang Anda inginkan, dan jangan ragu untuk menambahkan argumen lain apa pun ke FFmpeg di dalam file
ForEach
.Anda dapat mengambil langkah ini lebih jauh dan menambahkan
Remove-Item
sampai akhir untuk secara otomatis menghapus file lama.Jika
ffmpeg
tidak ada di jalur Anda, dan itu sebenarnya di direktori Anda saat ini, menulis di./ffmpeg
sana, bukan hanyaffmpeg
.Semoga ini bisa membantu siapa saja.
sumber
.ps1
file, bukan.bat
file. Anda harus menjalankanSet-ExecutionPolicy RemoteSigned
sebagai administrator jika Anda belum pernah menjalankan skrip PS sebelumnya.flac
File proses batch menjadimp3
(aman untuk nama file dengan spasi) menggunakan [1] [2]sumber
windows:
ini adalah bitrate variabel kualitas 2, Anda dapat mengaturnya ke 0 jika Anda mau tetapi kecuali Anda memiliki sistem pengeras suara yang benar-benar bagus, itu tidak berharga.
sumber
Jika Anda ingin antarmuka grafis untuk proses batch dengan ffmpegX, coba Batcher Cepat . Ini gratis dan akan mengambil pengaturan ffmpegX terakhir Anda untuk mengonversi file yang Anda masukkan.
Perhatikan bahwa Anda tidak dapat menyeret folder ke Batcher Cepat. Jadi pilih file dan kemudian letakkan di Quick Batcher.
sumber
Hanya yang ini Berfungsi untuk saya, mohon perhatikan bahwa Anda harus membuat folder "file baru" secara manual di mana file ffmpeg.exe berada.
Konversi . file ke .wav kode audio:
yaitu jika Anda ingin mengonversi semua file .mp3 ke .wav, ubah
("*.*")
menjadi("*.mp3")
.Penulis skrip ini adalah:
https://forum.videohelp.com/threads/356314-How-to-batch-convert-multiplex-any-files-with-ffmpeg
harap ini membantu 🙏.
sumber
Ini akan membuat video mp4 dari semua file jpg dari direktori saat ini.
sumber
Dan untuk Windows, ini tidak berfungsi
bahkan jika saya menggandakannya
%
.Saya bahkan akan menyarankan:
juga:
sumber
Ini yang saya gunakan untuk mengonversi batch avi ke 1280x mp4
Berfungsi dengan baik sebagai file cmd, jalankan, loop menemukan semua file avi di folder itu.
panggilan MY (ubah untuk Anda) ffmpeg, melewati nama input, pengaturan untuk menskalakan dengan penajaman. Saya rasa tidak perlu CRF dan "
-b:v 1024k
" ...File output adalah file input minus ekstensi, dengan mp4 sebagai ext baru.
sumber
Saya menggunakan one-liner ini di linux untuk mengkonversi file (biasanya H265) menjadi sesuatu yang bisa saya mainkan di Kodi tanpa masalah:
Ini mengonversi ke file sementara dan kemudian menggantikan yang asli sehingga nama tetap sama setelah konversi.
sumber
Juga jika Anda ingin konversi yang sama dalam subfolder. di sini adalah kode rekursif.
sumber
skrip php kecil untuk melakukannya:
sumber
escapeshellarg()
, dan berfungsi baik di windows dan linux. Saya setuju dengan kasus tepi.Solusi sederhana lain yang belum disarankan adalah menggunakan
xargs
:ls *.avi | xargs -i -n1 ffmpeg -i {} "{}.mp4"
Satu perangkap kecil adalah penamaan file output yang canggung (mis
input.avi.mp4
). Solusi yang mungkin untuk ini mungkin:ls *.avi | xargs -i -n1 bash -c "i={}; ffmpeg -i {} "\${i%.*}.mp4"
"sumber
ls
dengan diprintf '%s\n'
sini.