Bisakah saya menggunakan ffmpeg untuk membuat satu video yang mengambil segmen berbeda dari video yang berbeda?
1.webm, 2.webm, 3.webm, 4.webm
Itu adalah 4 file video saya. Saya ingin 10 detik dari setiap video. Segmen ditentukan oleh saya.
ffmpeg -i 1.webm -1 2.webm -i 3.webm -i 4.webm -ss 00:00:00 -t 10 -ss 00:00:10 \
-t 10 -ss 00:00:20 -t 10 -ss 00:00:30 -t 10;
Di atas bukan perintah nyata yang bekerja. Bisakah saya mendapatkan sesuatu seperti ini secara terprogram?
concatdec_select
dapat melakukan semua kebutuhan Anda dalam satu langkah superuser.com/a/1020455/15252Jawaban:
Anda tidak dapat melakukan ini dalam satu perintah. Namun, dengan asumsi Anda menjalankan di Linux dan memiliki Bash (atau yang serupa) sebagai shell Anda, yang diperlukan hanyalah dua perintah. Harap dicatat bahwa ini hanya berfungsi jika semua video memiliki codec video dan audio dan basis waktu yang sama persis (fps, dll.).
1. Buat daftar video dan mulailah waktu
Anda pertama-tama harus membuat daftar edit yang berisi yang berikut ini. Sebut saja
videos
:Perhatikan bahwa ini tidak mendukung nama video dengan spasi.
2. Membagi video
Sekarang kita akan membuat folder sementara untuk menampung video kecil kita. Sebut saja
tmp
. Kemudian Anda dapat membagi file Anda seperti ini:Di sini,
-t 10
berarti kami akan memotong 10 detik dari video, mulai dari stempel waktu yang ditentukan oleh-ss
. Anda juga dapat menggunakannya-to
daripada-t
memotongnya sampai titik tertentu.Jika semua video input Anda memiliki codec video dan audio yang berbeda, Anda harus menyandikan ulang video pada saat ini. Untuk ini, Anda harus mengganti
-c copy
bagian dengan pengaturan codec video dan audio tertentu, misalnya-c:v libx264 -c:a libfaac
untuk video dan audio H.264 / AAC.3. Menggabungkan video
Sekarang, menggunakan
concat
protokol kita dapat menggabungkan file kembali bersama-sama:Ini yang kamu butuhkan. Ia bekerja dengan secara dinamis membuat file penggabungan dengan cepat. Jika tidak, Anda harus membuat secara manual sesuai dengan
concat
dokumentasi .Akhirnya Anda bisa membersihkan
tmp
folder Anda .sumber
-c copy
perintah terakhir dengan-c:v libvpx -b:v 1M -c:a libvorbis
dan melihat apakah itu menghasilkan file yang dapat diputar?