Melhorar a qualidade do ffmpeg criado jpgs

26

Estou usando o ffmpeg para obter um feed mjpeg de uma câmera IP e convertê-lo em uma série de imagens jpeg. Aqui está o comando que estou usando:

ffmpeg -i http://xxx:[email protected]/vid.mjpg -f image2 -vcodec mjpeg %05d.jpg

Alguém sabe uma maneira de especificar o nível de compactação jpg ao usar o ffmpeg para criar fotos?

    
por weotch 03.08.2011 / 20:46

3 respostas

32

Veja o que acabou fazendo o truque para mim:

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

O -q:v 1 foi o ticket. Ele define a qualidade do codificador de vídeo, em que -q significa qualidade e :v significa vídeo. Os valores variam de 1 a 31, onde menor significa melhor.

    
por 18.08.2011 / 02:18
5

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

OR

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

Referência:

r       delay between next jpg, results 4 second
b       bitrate
vcodec  use jpeg encode
qscale  quality ratio
    
por 02.05.2012 / 17:05
3

Você pode tentar exportar para o PPM e usar outra ferramenta para converter em JPEG.

Eu olhei para o ffmpeg / libavcodec / mjpeg.c. Eu acredito que a qualidade é definida para um valor fixo.

Você também parece converter um vídeo MJPEG em quadros estáticos JPEG. Eu acho que neste caso o código em ffmpeg / libavcodec / mjpeg2jpeg_bsf.c é executado e os dados não são recodificados. Então, a qualidade da imagem não melhoraria de qualquer maneira.

Esta é a definição da tabela de quantização, não vi nenhuma referência a * val_? c onde os valores foram escalados antes de usar.

/* 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,
    
por 03.08.2011 / 22:17

Tags