Gravando uma webcam usando o ffmpeg

2

Estou lutando com o ffmpeg. Minha webcam pode fazer 720p a 30fps, mas somente ao usar o codec MJPEG:

~> v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
        Index       : 0
        Type        : Video Capture
        Pixel Format: 'YUYV'
        Name        : YUV 4:2:2 (YUYV)


-- cut -- 

                Size: Discrete 1280x720
                        Interval: Discrete 0.133 s (7.500 fps)
                        Interval: Discrete 0.200 s (5.000 fps)
-- cut --

        Index       : 1
        Type        : Video Capture
        Pixel Format: 'MJPG' (compressed)
        Name        : MJPEG


-- cut -- 
                Size: Discrete 1280x720
                        Interval: Discrete 0.033 s (30.000 fps)
                        Interval: Discrete 0.040 s (25.000 fps)
                        Interval: Discrete 0.050 s (20.000 fps)
                        Interval: Discrete 0.067 s (15.000 fps)
                        Interval: Discrete 0.100 s (10.000 fps)
                        Interval: Discrete 0.200 s (5.000 fps)

-- cut --

Não consigo descobrir como dizer ao ffmpeg para ler o formato compactado MJPEG. Está tentando ler a variante bruta, que acaba com uma qualidade horrível.

    
por Let_Me_Be 17.05.2013 / 18:04

1 resposta

3

Você não diz quais opções está usando, mas eu encontrei esses dois exemplos. Isso funciona para você?

ffmpeg -i <input_file> -vcodec mjpeg -qmin 1 -qmax 1 -o <output_file.avi>
ffmpeg -i <input_file> -vcodec mjpeg -qscale 1 <output_file.avi>

Para o segundo exemplo, encontrei uma observação que mencionou que a opção -qscale ... fez uma diferença notável. Quanto menor o seu x, melhor é a qualidade (intervalo de 2 a 32, frações permitidas).

    
por 17.05.2013 / 21:36

Tags