Saya berhasil menggabungkan beberapa file menggunakan perintah berikut:
ffmpeg -f concat -i input.txt -codec copy output.mp4
Satu-satunya masalah dengan perintah ini adalah Anda perlu membaca filepath dari file teks yang disebut input.txt dengan konten berikut:
file 'C:\Users\fabio\Downloads\Super\Sharks\01.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\02.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\03.mp4'
Apakah ada cara untuk mencapai tujuan yang sama tanpa harus membaca filepath dari file? Saya sudah mencoba yang berikut ini tanpa hasil:
ffmpeg -f concat -i file "C:\a\b\01.mp4" file "C:\a\b\02.mp4" -codec copy output.mp4
ffmpeg -f concat -i "C:\a\b\01.mp4" "C:\a\b\02.mp4" -codec copy output.mp4
Apakah saya harus menggunakan perintah yang berbeda?
command-line
ffmpeg
Fabio Delarias
sumber
sumber
Jawaban:
Pembaruan 2019:
Seperti disebutkan dalam komentar, Stack Overflow memiliki deskripsi yang bagus tentang opsi yang tersedia untuk penggabungan, serta diskusi tentang metode yang digunakan tergantung pada jenis file yang Anda gunakan:
Bagaimana cara menggabungkan dua file MP4 menggunakan FFmpeg?
Asli 2016 jawaban:
Anda harus dapat menggunakan metode protokol concat untuk menggabungkan file:
Selain itu, manual FFmpeg membahas metode khusus untuk file MP4, agar dapat digabungkan tanpa kehilangan, tetapi mengharuskan Anda membuat file sementara (atau bernama pipa):
sumber
output.mp4
.Anda dapat mengganti file dengan daftar dengan mengeluarkan daftar ke
stdout
dan membaca daftar daristdin
dengan ffmpeg:sumber
Tidak, tampaknya tidak ada cara untuk menggunakan demuxer concat ffmpeg pada satu baris perintah tanpa beberapa hack. Anda perlu membuat file teks input dengan daftar file. Saya pikir ini aneh sendiri, mungkin seseorang akan menambahkan ini ke FFMpeg di kemudian hari.
Jawaban yang diterima untuk pertanyaan ini menggunakan protokol concat, bukan demuxer concat yang diminta OP.
sumber
Anda masih bisa melakukannya dalam skrip tanpa mengubah perintah. Sesuatu seperti:
$$ diperluas ke pid dari shell yang menjalankan perintah, sehingga nama file akan berbeda setiap kali Anda menjalankannya. jadi Anda bisa menggunakan $$. txt jika Anda mau. Atau sesuatu yang lain...
Anda juga dapat menggunakan file di sini untuk menambahkan banyak data ke file:
bash Substitusi berfungsi, jadi Anda dapat menentukan konten file secara terprogram, itu tidak harus diperbaiki. Saya menanamkan hal-hal semacam ini untuk loop sepanjang waktu. Akhirnya, pengalihan berfungsi sama seperti di atas, jadi> $ .tmp memotong kemudian menulis, >> $$. Tmp ditambahkan.
sumber