Saya mencoba mengekstrak bingkai kunci dari klip video. Saya mencoba perintah berikut, tetapi ekstrak semua bingkai.
ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg
Saya mencoba mengekstrak bingkai kunci dari klip video. Saya mencoba perintah berikut, tetapi ekstrak semua bingkai.
ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg
Jawaban:
Anda dapat menjadikan ini lebih mudah menggunakan -skip_frame
tanpa perlu select
filter video:
ffmpeg -skip_frame nokey -i 2.flv -vsync 0 -r 30 -f image2 thumbnails-%02d.jpeg
-threads 1
, dibandingkan dengan default, -threads auto
ini membuat cropdetect
grafik filter ( ffmpeg -threads 1 -skip_frame nokey -i input.mkv -filter:v select='not(mod(n\,20))',cropdetect -an -f null /dev/null
) 2x lebih cepat di sistem saya (60s turun menjadi 30s)!
-threads 1
adalah karena jika tidak, urutan keyframe output dapat dikeluarkan tidak sesuai pesanan. Jika Anda memiliki semacam cara post-hoc untuk mengatasi masalah ini, Anda dapat mempertahankan multi-threading. Juga, tampaknya masih mungkin untuk keluar dari keyframe yang rusak, bahkan ketika menggunakan -threads 1
, tetapi sekarang dalam kasus ini semua kejadian seperti itu tampaknya disertai / ditandai oleh kesalahan decoder h264 illegal short term buffer state detected
.
Contoh menggunakan select
dan scale
filter:
ffmpeg -i 2.flv -vf "select=eq(pict_type\,I),scale=73x41" \
-vsync vfr -qscale:v 2 thumbnails-%02d.jpeg
Beberapa tips:
Filter tidak boleh datang sebelum -i
opsi, karena mereka merupakan opsi output. Saya tidak tahu persis dari mana Anda mendapatkan perintah itu, tetapi PICT_TYPE_I
tidak ada - seharusnya I
.
Di scale
filter Anda dapat mengganti 73
atau 41
membuat filter secara otomatis menghitung lebar atau tinggi untuk mempertahankan rasio aspek: seperti scale=73:-1
atau scale=-1:41
. Ini mencegah peregangan atau pengepresan yang dapat terjadi akibat penskalaan "paksa".
Kualitas output dapat dikontrol dengan -qscale:v
(atau alias -q:v
). Rentang efektif adalah skala linier 2 hingga 31 dan nilai yang lebih rendah adalah kualitas yang lebih tinggi.
Bahwa Anda ffmpeg
mengizinkan filter sebelum input memberi tahu saya itu bisa usang. Unduh build statis terbaru untuk sistem operasi Anda, atau bangun sendiri sesuai dengan panduan kompilasi jika hal di atas tidak berfungsi.
ffmpeg -i 2.flv -vf "select=eq(pict_type\,I)" -vsync vfr frame-%02d.png
jika ini kesalahan :
Opsi vf (set filter video) tidak dapat diterapkan ke url input 1508.mp4 - Anda mencoba menerapkan opsi input ke file output atau sebaliknya. Pindahkan opsi ini sebelum file miliknya. Kesalahan opsi penguraian untuk file input 1508.mp4. Kesalahan membuka file input: Argumen tidak valid
kamu bisa melakukan ini:
ffmpeg -i 263.mp4 -vf select=eq(pict_type\,PICT_TYPE_I) -vsync 2 -s 480x320 -r 24 -f image2 thumbnails-%05d.jpeg
== --------------------------------------------
"-I" Parameter di muka