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?
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?
Jawaban:
-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.
ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg
ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 output.jpg
Ini akan bekerja dengan input video apa pun. Lihat di bawah jika masukan Anda adalah MJPEG.
Jika input Anda adalah MJPEG (Motion JPEG) maka gambar dapat diekstraksi tanpa kehilangan kualitas.
The ffmpeg
atau ffprobe
konsol keluaran dapat memberitahu Anda jika Anda adalah masukan MJPEG:
$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nw=1 input.avi
codec_name=mjpeg
Kemudian Anda dapat mengekstrak bingkai menggunakan mjpeg2jpeg
filter bitstream :
$ ffmpeg -i input.avi -codec:v copy -bsf:v mjpeg2jpeg output_%03d.jpg
-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:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_%03d.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 dari ffmpeg
.
ffmpeg
mengeluarkan PNG8
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 apa ffmpeg
yang Anda gunakan yang mengeluarkan PNG8
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 bagaimana identify
pengguna rata-rata seharusnya memahami itu tho.