Saat ini saya menggunakan perintah ini untuk mengekstrak gambar:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_% 03d.jpeg
Tetapi bagaimana saya dapat meningkatkan kualitas gambar JPEG?
video
graphics
ffmpeg
computer-vision
sharpffmpeg
Daniel Gartmann
sumber
sumber
Jawaban:
Menggunakan
-qscale:v
Gunakan
-qscale:v
(atau alias-q:v
) sebagai opsi keluaran. Rentang efektif untuk JPEG adalah 2-31 dengan 31 sebagai kualitas terburuk. Saya sarankan mencoba nilai 2-5.Untuk menghasilkan serangkaian gambar:
Untuk menghasilkan gambar tunggal dengan durasi ~ 60 detik:
Ini akan bekerja dengan input video apa pun. Lihat di bawah jika masukan Anda adalah MJPEG.
MJPEG
Jika input Anda adalah MJPEG (Motion JPEG) maka gambar dapat diekstraksi tanpa kehilangan kualitas.
The
ffmpeg
atauffprobe
konsol keluaran dapat memberitahu Anda jika Anda adalah masukan MJPEG:Kemudian Anda dapat mengekstrak bingkai menggunakan
mjpeg2jpeg
filter bitstream :Lihat juga
sumber
-qmin 1 -qmax 1
selain-q:v 1
menggandakan ukuran file. Dan saya juga bisa melihat sedikit peningkatan.-qmin 1 -qmax 1
menghasilkan file yang lebih besar, tetapi memberi saya gambar yang sama persis. Saya memvalidasi ini melalui photoshop, 2 layer dan filter perbedaan. Pikselnya sama.-qmin 1 -q:v 1
.Keluarkan gambar dalam format lossless seperti PNG:
Kemudian gunakan program lain (di mana Anda dapat lebih tepat menentukan kualitas, subsampling dan metode DCT - misalnya GIMP) untuk mengonversi PNG yang Anda inginkan ke JPEG.
Dimungkinkan untuk mendapatkan gambar yang sedikit lebih tajam dalam format JPEG dengan cara ini daripada yang dimungkinkan dengan
-qmin 1 -q:v 1
dan dikeluarkan sebagai JPEG langsung dariffmpeg
.sumber
ffmpeg
mengeluarkanPNG8
file yang hanya menggunakan 256 warna (sama seperti GIF). jadi sebenarnya sangat merugikan.ffmpeg
perintah [ ] ini, saya mendapatkan png kualitas tinggi yang kualitasnya identik dengan video aslinya." Versi apaffmpeg
yang Anda gunakan yang mengeluarkanPNG8
file, dan apa format input Anda?identify image.png
memberikan hasil "8-bit" padahal sebenarnya bukan saluran tunggal 8-bit, tetapi 8-bit untuk R, G dan B. IDK bagaimanaidentify
pengguna rata-rata seharusnya memahami itu tho.