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.