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
:
1.webm 00:00:00
2.webm 00:00:10
3.webm 00:00:20
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:
while read video time; do ffmpeg -i $video -ss $time -t 10 -c copy tmp/$video; done < videos
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:
ffmpeg -f concat -i <(for f in tmp/*.webm; do echo "file '$f'"; done) -c copy output.webm
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 .
concatdec_select
dapat melakukan semua kebutuhan Anda dalam satu langkah superuser.com/a/1020455/15252