ffmpeg: tambahkan 3 detik hitam untuk head dan tail video

11

Katakanlah saya punya video, yang dapat memiliki dimensi atau codec (misalnya mp4), dan saya ingin menambahkan 3 detik bingkai hitam ke kepalanya.

Saya telah melihat varian lain untuk pertanyaan ini yang berkaitan dengan menambahkan satu frame, dan juga jawaban yang menentukan lebar dan tinggi video. Namun video dapat memiliki lebar dan tinggi berapa pun dan saya tidak ingin mengubah nilai-nilai itu. Tambahkan saja hitam. Dalam perintah terpisah, saya juga ingin menambahkan detik hitam ke ekor.

Seharusnya tidak ada audio di bagian hitam - hitam hanya harus digabungkan ke depan dan akhir. Juga, saya ingin menghindari penyandian ulang video jika memungkinkan, dan salin hasilnya ke file baru.

Bantuan apa pun akan dihargai.

batmannutjob
sumber
Apakah audio ada? Dan apakah Anda ingin melewatkan penyandian ulang video utama?
Gyan
@Mulvya terima kasih atas masukan Anda. Saya telah memperbarui pertanyaan saya.
Matt C
@MattC Anda dapat menghapus komentar di atas sekarang. Ini akan membutuhkan banyak perintah, kecuali jika Anda menyandikan ulang. Apakah itu oke?
Gyan
@Mulvya ya beberapa perintah baik. Terima kasih lagi.
Matt C

Jawaban:

12

Metode dasar untuk bergabung dengan video tanpa pengodean ulang adalah dengan menggunakan demuxer concat. Perangkat ini mensyaratkan bahwa file yang bergabung berbagi properti tertentu, seperti codec, framerate, dimensi video, timebase..etc

Langkah pertama adalah membuat segmen kosong, yang dapat digunakan di bagian kepala dan ekor.

ffmpeg -i fullvideo.mp4 -vf trim=0:3,geq=0:128:128 -af atrim=0:3,volume=0 -video_track_timescale 600 3sec.mp4

Harus melakukan satu langkah pembukuan untuk video lengkap. Jika tidak dilakukan, video gabungan kemungkinan akan berjalan pada kecepatan yang salah.

ffmpeg -i fullvideo.mp4 -c copy -video_track_timescale 600 full600.mp4

Selanjutnya, buat file teks.

file 3sec.mp4
file full600.mp4
file 3sec.mp4

Lalu lari

ffmpeg -f concat -i list.txt -c copy merged.mp4

Langkah pertama saya mengasumsikan bahwa aliran video memiliki format piksel paling umum yuv420p. Yang seharusnya baik-baik saja karena ini adalah satu-satunya format piksel yang didukung oleh pemain web dan kamera ponsel cerdas, camcorder konsumen..etc. Jika tidak, geqfilter mungkin gagal.

Saya juga berasumsi, secara diam-diam, bahwa video lengkap tidak menggunakan lebih banyak frame referensi daripada yang dihasilkan oleh preset mediumx264. Ini asumsi yang aman untuk 95% video.

Akhirnya, saya menganggap video lengkap memiliki AAC-LC sebagai codec audio-nya. Diharapkan benar dari sebagian besar video ponsel / kamera / web.

Gyan
sumber