2-проходное кодирование с помощью avconv

5

Я не понимаю, почему качество видео с многопроходной кодировкой хуже одного прохода?

Когда я это делаю, это правильно:

avconv -i video.mpg -s 640x360 -threads auto \
       -vcodec libxvid -b 800k -r 24 -g 300 -bf 2 \
       -acodec libmp3lame -ac 2 -ab 128k -ar 48000 \
       video.avi

Это хуже всего:

avconv -i video.mpg -s 640x360 -pass 1 -threads auto \
       -vcodec libxvid -b 800k -r 24 -f avi -an -y /dev/null
avconv -i video.mpg -s 640x360 -pass 2 -threads auto \
      -vcodec libxvid -b 800k -r 24 -g 300 -bf 2 \
      -acodec libmp3lame -ac 2 -ab 128k -ar 48000 \
      video.avi

Что я делаю неправильно?

    
задан Tazeg 20.12.2012 в 23:52
источник

1 ответ

5

Если вы ухудшаетесь, возможно, потому, что вы неправильно используете флаг -b. Он использовал для обозначения только битрейта видео, но с недавним обновлением синтаксиса ffmpeg / avconv, теперь он относится к общему битрейту. Итак, первый проход говорит avconv, что он имеет 800 кбит / с для воспроизведения видео, но второй проход говорит, что он имеет (800-128) = 672 кбит / с для работы.

Что делает первый проход, это создать своего рода дорожную карту для второго прохода, чтобы воспользоваться этим местом - это место действия, ему нужен более высокий битрейт; это медленный разговор, ему нужно меньше - что-то в этом роде. Поскольку он работает с неправильной информацией, дорожная карта неверна.

Используйте -b: v вместо (и -b: a вместо -ab), например:

avconv -y -i video.mpg -s 640x360 -pass 1 -threads auto -c:v libxvid -b:v 672k -r 24 -f avi -an /dev/null
avconv -i video.mpg -s 640x360 -pass 2 -threads auto -c:v libxvid -b:v 672k -r 24 -g 300 -bf 2 -c:a libmp3lame -ac 2 -b:a 128k -ar 48000 video.avi

Кроме того, многие из этих параметров, возможно, не нужны, поскольку avconv будет использовать те же параметры, что и вход. Если вы не изменяете размер видео, опустите бит -s 640x360 . Аналогично, если вам не нужно менять частоту кадров, опустите -r 24 , и если вам действительно не нужно менять частоту дискретизации, опустите -ar 48000 . Очевидно, если вы знаете, что они вам нужны, оставьте их.

    
ответ дан evilsoup 04.01.2013 в 12:27