ffmpeg: преобразование AVI в FLV удваивает размер файла

#ffmpeg #flv #filesize #avi

#ffmpeg #flv #размер файла #avi

Вопрос:

Я конвертирую AVI в FLV с помощью ffmpeg, используя параметр -sameq (то же качество):

 ffmpeg -i test.avi -sameq -f flv sameq.flv
  

Результирующий файл имеет то же качество видео и звука, что и оригинал, но его размер более чем в два раза превышает исходный файл:

 84M sameq.flv
41M test.avi
  

Почему это происходит?

Результат транскодирования:

 ffmpeg version N-34750-g070d2d7, Copyright (c) 2000-2011 the FFmpeg developers
  built on Nov 12 2011 11:23:07 with gcc 4.6.1
  configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-x11grab
  libavutil    51. 24. 1 / 51. 24. 1
  libavcodec   53. 33. 0 / 53. 33. 0
  libavformat  53. 20. 0 / 53. 20. 0
  libavdevice  53.  4. 0 / 53.  4. 0
  libavfilter   2. 48. 0 /  2. 48. 0
  libswscale    2.  1. 0 /  2.  1. 0
  libpostproc  51.  2. 0 / 51.  2. 0
Input #0, avi, from 'test.avi':
  Duration: 00:06:30.00, start: 0.000000, bitrate: 866 kb/s
    Stream #0:0: Video: mpeg4 (Advanced Real Time Simple Profile) (DIVX / 0x58564944), yuv420p, 400x300 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
    Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz, mono, s16, 64 kb/s
[buffer @ 0xa247ae0] w:400 h:300 pixfmt:yuv420p tb:1/1000000 sar:1/1 sws_param:
Output #0, flv, to 'sameq.flv':
  Metadata:
    encoder         : Lavf53.20.0
    Stream #0:0: Video: flv1 ([2][0][0][0] / 0x0002), yuv420p, 400x300 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 1k tbn, 25 tbc
    Stream #0:1: Audio: mp3 ([2][0][0][0] / 0x0002), 44100 Hz, mono, s16, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg4 -> flv)
  Stream #0:1 -> #0:1 (mp3 -> libmp3lame)
Press [q] to stop, [?] for help
frame= 9742 fps=255 q=0.0 Lsize=   85074kB time=00:06:30.00 bitrate=1787.0kbits/s    
video:79163kB audio:5525kB global headers:0kB muxing overhead 0.455568%
  

Ответ №1:

На ум приходят две вещи:

  1. Сожмите видео без аудиопотока, чтобы устранить звуковую часть этой проблемы. Кстати, битрейт источника звука ВДВОЕ меньше выходного, что немного увеличивает размер. Используйте переключатели -ar и -ab для управления выводом.

  2. Ознакомьтесь с этой статьей о сравнении qscale с качеством с помощью опции -qscale. Добавьте -b (битрейт) и -s (размер) и настройте его в соответствии с вашими потребностями.

Если ничего не получается, вы можете попробовать несколько переключателей с веб-сайта ffmpeg или попробовать использовать новое сжатие H.264, рекомендуется использовать двухпроходный вариант. Получайте удовольствие от сжатия

Комментарии:

1. Спасибо! Отличный совет! Но почему это удваивает размер, все еще не ясно.

2. В оригинале используется mpeg4, который обычно имеет более высокую степень сжатия , чем кодеки, отличные от h.264, в вашем случае по умолчанию установлен формат flv.

Ответ №2:

это из-за -sameq . Это обеспечивает хорошее качество, но за это приходится расплачиваться большим размером файла.

Ответ №3:

Можете ли вы попробовать добавить:

 -qcomp 1.0
  

сжатие масштаба квантователя видео (VBR) (по умолчанию 0,5). Константа уравнения контроля скорости. Рекомендуемый диапазон для rc_eq по умолчанию: 0.0-1.0

Комментарии:

1. Тот же результат. Качество и размер файла остаются прежними.