Oluşturulan fpmpeg'in oluşturduğu jpgs kalitesini artırın


29

IP kameradan bir mjpeg beslemesi almak ve onu bir dizi hareketsiz görüntüye dönüştürmek için ffmpeg kullanıyorum. İşte kullanıyorum komut:

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

Ffmpeg kullanırken fotoğraf oluşturmak için jpg sıkıştırma seviyesini belirlemenin bir yolunu bilen var mı?

Yanıtlar:


36

İşte benim için hile yaparak sona erdi:

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

-q:v 1Biletti. Video kodlayıcısının -qkalitesini , araçların kalitesini ve videoyu belirtir :v. Değerler 1 ila 31 arasındadır, düşük ise daha iyi demektir.


2
Bunun yıllar önce kullanılabilir olup olmadığını bilmiyorum ama kaynak JPEG resimlerinin MJPEG'den değiştirilmesini istiyorsanız, cevap burada: ffmpeg.org/ffmpeg-bitstream-filters.html#mjpeg2jpeg ---- Kısaca: -c:v copy -bsf:v mjpeg2jpegyerine: q:v 1.
— juanitogan

1
Hangi varsayılan değeri kullandığını bilen var mı?
— Jay R. Wren,

@ JayR.Wren Bazı testler yaptım ve benim durumumda düşük (iyi) başlıyor gibi görünüyor ve birkaç saniye sonra 24,8 (kötü) yükselir. Neden bilmiyorum. ffmpegs şu anki kalitesini gösterir q. İşte 24.8 , örneğinframe= 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
— sorunlu kişi,

6

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

VEYA

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

Referans:

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

qscale bitrate belirticisiyle "rekabet" ediyor, merak ediyorum?
— rogerdpack

1
Sorulanın tam tersi bu değil mi? Bu, jpeg'den mjpeg'e benziyor. Jpeg için mjpeg sormak.
— juanitogan

4

PPM'ye aktarmayı deneyebilir ve JPEG'e dönüştürmek için başka bir araç kullanabilirsiniz.

Ben ffmpeg / libavcodec / mjpeg.c'ye baktım. Kalitenin sabit bir değere ayarlandığını düşünüyorum.

Ayrıca, bir MJPEG videosunu JPEG fotoğraf karelerine dönüştürüyorsunuz. Bu durumda ffmpeg / libavcodec / mjpeg2jpeg_bsf.c'deki kod çalışıyor ve verilerin kaydedilmediğini düşünüyorum. Böylece görüntü kalitesi zaten iyileşmez.

Bu, niceleme tablosu tanımı, kullanımdan önce değerlerin ölçeklendiği * val_? C referanslarını görmedim.

/* 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,

PPM'ye aşina değilim, bu nedir?
— saat

Ayrıca, kameradan tarayıcıya eriştiğimde oluşturduğum jpgs'le karşılaştırıldığında görüntüler daha iyi görünüyor. Bu yüzden bir sıkıştırma meydana geldiğini düşünüyordum.
— saat

PPM, hayal edebileceğiniz en basit renkli görüntü formatıdır. Sadece "P6 640 480 255 \ n" gibi bir başlık ve sonra ham veriler. Sadece baktım. Belki bu formatı gerçekten çıkartamaz. O zaman diğer tek seçenek -vc rawvideo olur. -Kalite denedin mi?

1
-vcodec ppmppm'yi dışa aktarmak için gereklidir
— Monica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.