Meningkatkan kualitas jpg ffmpeg yang dibuat


29

Saya menggunakan ffmpeg untuk mengambil umpan mjpeg dari kamera IP dan mengubahnya menjadi serangkaian gambar jpeg yang masih. Inilah perintah yang saya gunakan:

ffmpeg -i http://xxx:xxx@xx.xx.xx.xx/vid.mjpg -f image2 -vcodec mjpeg %05d.jpg

Apakah ada yang tahu cara untuk menentukan tingkat kompresi jpg saat menggunakan ffmpeg untuk membuat foto?

Jawaban:


36

Inilah yang akhirnya melakukan trik untuk saya:

ffmpeg -i http://xx.xx/mjpg/video.mjpg -q:v 1 %05d.jpg

Itu -q:v 1tiketnya. Ini menetapkan kualitas encoder video, di mana -qkualitas rata-rata dan :vvideo sarana. Nilai berkisar dari 1 hingga 31, di mana lebih rendah berarti lebih baik.


2
Saya tidak tahu apakah ini tersedia tahun yang lalu tetapi jika Anda ingin sumber gambar JPEG tidak dimodifikasi dari MJPEG, jawabannya ada di sini: ffmpeg.org/ffmpeg-bitstream-filters.html#mjpeg2jpeg ---- Singkatnya: -c:v copy -bsf:v mjpeg2jpegalih-alih daripada q:v 1.
juanitogan

1
Adakah yang tahu nilai default yang digunakannya?
Jay R. Wren

@ JayR. Ketika saya melakukan beberapa tes dan dalam kasus saya tampaknya mulai rendah (baik) dan setelah beberapa detik naik menjadi 24,8 (buruk). Saya tidak tahu kenapa. ffmpegs menunjukkan kualitas saat ini sebagai q. Ini dia 24,8 misalnyaframe= 64 fps=5.0 q=24.8 Lsize=N/A time=00:00:16.00 bitrate=N/A dup=10 drop=299 speed=1.25x
problemofficer

6

$ ffmpeg -r 1/4 -i %03d.jpg -b 5000 -vcodec mjpeg -qscale 1 5000.avi

ATAU

$ ffmpeg -r 1/4 -i %03d.jpg -vcodec copy -qscale 1 copy.avi

Referensi:

r       delay between next jpg, results 4 second
b       bitrate
vcodec  use jpeg encode
qscale  quality ratio

apakah qscale "bersaing" dengan specifier bitrate, saya bertanya-tanya?
rogerdpack

1
Bukankah ini kebalikan dari apa yang ditanyakan? Ini terlihat seperti jpeg ke mjpeg. mjpeg ke jpeg adalah permintaannya.
juanitogan

4

Anda dapat mencoba untuk mengekspor ke PPM dan menggunakan beberapa alat lain untuk mengonversi menjadi JPEG.

Saya melihat ke ffmpeg / libavcodec / mjpeg.c. Saya percaya kualitasnya diatur ke nilai tetap.

Anda juga tampaknya mengkonversi video MJPEG menjadi bingkai foto JPEG. Saya pikir dalam hal ini kode dalam ffmpeg / libavcodec / mjpeg2jpeg_bsf.c berjalan dan data tidak dikodekan ulang. Jadi kualitas gambar tidak akan membaik.

Ini adalah definisi tabel kuantisasi, saya tidak melihat referensi ke * val_? C di mana nilai-nilai diskalakan sebelum digunakan.

/* Set up the standard Huffman tables (cf. JPEG standard section K.3) */
/* IMPORTANT: these are only valid for 8-bit data precision! */
const uint8_t ff_mjpeg_bits_dc_luminance[17] =
{ /* 0-base */ 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 };
const uint8_t ff_mjpeg_val_dc[12] =
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };

const uint8_t ff_mjpeg_bits_dc_chrominance[17] =
{ /* 0-base */ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };

const uint8_t ff_mjpeg_bits_ac_luminance[17] =
{ /* 0-base */ 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d };
const uint8_t ff_mjpeg_val_ac_luminance[] =
{ 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,

Saya tidak terbiasa dengan PPM, apa itu?
weotch

Juga, gambar terlihat lebih baik ketika saya mengakses kamera dari browser dibandingkan dengan jpg yang saya buat. Itu sebabnya saya berpikir beberapa kompresi sedang terjadi.
weotch

PPM adalah format gambar warna paling sederhana yang bisa dibayangkan. Hanya sebuah header seperti "P6 640 480 255 \ n" dan kemudian data mentah. Saya baru saja melihat. Mungkin sebenarnya tidak bisa menampilkan format ini. Satu-satunya opsi lain adalah -vc rawvideo. Apakah Anda mencoba -kualitas?

1
-vcodec ppmdiperlukan untuk mengekspor ppm
Stop Harming Monica
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.