Стратегия кодирования видео ffmpeg для предотвращения «раздувания» видео низкого качества - PullRequest
2 голосов
/ 11 марта 2011

Мы пытаемся создать сайт обмена видео на основе php, который позволяет пользователям загружать свой собственный контент.

Нам необходимо преобразовать все эти видео в видеофайл mp4 среднего качества для возможной потоковой передачи через FlowPlayer..

Наш код выглядит примерно так (пример для flv):

system("ffmpeg -i $vidPath -pass 1 -ab 64k -ar 44100 -ac 1 -vcodec flv -b 1500k -cmp 3 -subcmp 3 -mbd 2 $flvPath");

Проблема в том, что при этом любой тип видео продолжительностью 1 минута преобразуется в файл размером 10 МБ.Если это высококачественное 1-минутное видео, оно преобразуется в файл размером 10 МБ - и это здорово.Однако, если это видео низкого качества, скажем, всего 2 МБ, оно будет по-прежнему преобразовано в файл размером 10 МБ !!

Какую стратегию / метод я должен принять, чтобы загрузитьвидео имеют верхнюю границу, но видео более низкого качества одинаковой длины не «надуваются» до одинакового размера!

1 Ответ

1 голос
/ 11 марта 2011

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

Другой интересный параметр - -fs, который устанавливаетмаксимальный размер файла.Если вы можете определить длину видео до его кодирования, вы можете выяснить, какой будет хороший верхний предел для этой длины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...