Lewati bagian video saat mengonversinya menjadi gambar dengan ffmpeg

0

Saya menggunakan perintah ini di ffmpeg untuk mengkonversi video menjadi gambar:

ffmpeg -i video.mp4 -q:v 1 -r 1 -f image2 frame-03d%.jpg

Yang ingin saya lakukan adalah melewatkan x detik pertama dan y detik terakhir video dari konversi bingkai, pada dasarnya penyihir intro dan berakhir. Setiap video memiliki panjang yang berbeda tetapi intro dan ending selalu sama di setiap video (sekitar 30 detik). Apakah ada cara untuk melakukan ini?

Hyperion
sumber

Jawaban:

1
ffmpeg -i BigBuckBunny_320x180.mp4 -ss 00:00:09.000 -t 60 -q:v 1 -r 1 -f image2 image_%05d.jpeg

-ss start time
-t duration from start time

atau gunakan trim

ffmpeg -i BigBuckBunny_320x180.mp4 -vf trim=09:69 -r 1 -f image2 image_%05d.jpeg

Cara mendapatkan durasi contoh video.

ffprobe -v quiet -show_streams -select_streams v: 0 -show_entries stream = durasi BigBuckBunny_320x180.mp4 | durasi grep | awk -F = '{print $ 2}'

Alam
sumber
Perlu dicatat bahwa untuk video dengan panjang yang berbeda-beda, Anda harus menggunakan skrip shell atau file batch untuk mengetahui total durasi dalam detik dan kemudian kurangi 30 detik dari ujung sebelum memanggil ffmpeg. Ini adalah bagian "rumit" dari pertanyaan.
sok
Itu hanya contoh. Bagaimanapun dia akan mendapatkan intro dan mengakhiri periode. Dia bisa mendapatkan durasi klip dari iterasi yang sama.
Alam
Ya, dia bisa, tetapi seperti yang saya katakan, ini adalah masalah yang lebih rumit di sini. Jadi jawaban Anda akan lebih membantu jika itu menunjukkan cara mendapatkan durasi, melakukan perhitungan, kemudian meneruskannya ke ffmpeg.
slhck
Sslhck Saya menambahkan perintah untuk mendapatkan durasi video. Semoga ini bisa membantu.
Alam
Ok jadi perintahnya harus -tx di mana x dihitung sebagai VIDEO DURATION - 60 (30 detik dari awal dan 30 detik dari akhir). Tetapi saya tidak mendapatkan apa yang dilakukan perintah trim, apakah 09:69?
Hyperion