На какие параметры следует обратить внимание, чтобы уменьшить размер файла .MOV?

На какие параметры следует обратить внимание, чтобы уменьшить размер файла .MOV?

Мой Canon 60D создает файлы .MOV при записи видео, и я обнаружил, что контейнер .MOV содержит видеопоток H264 и аудиопоток PCM.

Я использовал ffmpeg и GSpot для просмотра некоторых своих видео и увидел, что битрейт довольно высокий (22 000 кбит/с для 640x480, 45 000 для 1920x1080).

Я хотел бы уменьшить размер файлов, но при этом сохранить достаточно высокое качество. Я поигрался с самым простым, что смог придумать, — уменьшением битрейта, и это дало то, чего я ожидал: уменьшил битрейт вдвое, и размер файла стал примерно вдвое меньше. Но мне интересно, есть ли способ определить «хороший» целевой битрейт или есть ли смысл пытаться использовать переменный битрейт.

решение1

Но мне интересно, есть ли способ определить «хороший» целевой битрейт…

Хорошей целевой скоростью передачи данных является скорость передачи данных, которая:

  • поддерживается сетью, через которую вы транслируете материал (например, сетью 3G, домашним WiFi и т. д.), что довольно легко подсчитать
  • выглядит хорошоты, что является весьма субъективной мерой

22 Мбит/с или 45 Мбит/с действительно довольно много для среднего пользователя, и особенно для уже сжатого видео, такого как h.264. Вы определенно можете пойти дальше и уменьшить битрейт до "разумного" значения, всегда учитывая, какой объем хранилища вы можете себе позволить и насколько вы готовы потерять качество.

Вы также можете изменить размер видео 1080p до 720p, если вам не нужен такой размер или у вас нет возможности его редактировать.

… или есть ли смысл пытаться использовать переменный битрейт

Суть постоянного битрейта заключается в адаптации к сценарию потокового мультимедиа, где есть узкое место, ограничивающее максимальный битрейт передаваемого видео. В современном мире мультимедиа это уже не обязательно имеет смысл.

Когда вы сжимаете видео в постоянное количество бит в секунду, вы по сути говорите кодеру всегда использовать одно и то же количество бит для кодирования одного и того же временного кадра. Это лучший подход? Как вы уже могли догадаться, это не так. ЦитатаРуководство по ИРКиз Handbrake (я вернусь к этому позже):

Глаз воспринимает больше деталей в неподвижных объектах, чем когда они находятся в движении. Из-за этого видеокомпрессор может применять большее сжатие (отбрасывать больше деталей), когда объекты движутся, и меньшее сжатие (сохранять больше деталей), когда объекты неподвижны. Субъективно видео будет казаться более качественным.

Так чтоделаетимеет смысл использовать переменный битрейт, когда это возможно. Это сделает видео лучше, даже при том же размере файла, что и видео с постоянным битрейтом.

Более того, большинство кодировщиков, самый известный из которых —х264– часто выполняюточеньплохо, когда вы говорите им использовать постоянный битрейт. Лучше дать им немного больше "свободы" в смысле того, сколько бит они хотят потратить на кадр. В конце концов, это работа кодировщика, а не вас. И это называется "постоянное качество".


Хватит об этом – что это значит на практике? Если вы используете FFmpeg для кодирования видео, то вы уже используете достаточно хороший инструмент. Если у вас также установлен x264 и вы используете последнюю версию обоих, то вы используете один из лучших кодировщиков, которые в настоящее время доступны бесплатно. Вместо кодирования с фиксированным битрейтом позвольте x264 выбирать, сколько он хочет потратить. Сделайте это с помощьюПостоянный фактор скоростивариант.

В очень простом случае это означает установку значения от 17 до 23. Я выбираю MP4 в качестве выходного контейнера вместо MOV, потому что естьлучшие инструментыдля ремультиплексирования доступно:

ffmpeg -i input.mov -c:v libx264 -crf 22 output.mp4

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

Теперь ваша задача — найти значение ИРК, которое:

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

Да, это требует большого количества кодирования и проб и ошибок, но это повседневная работа, когда вы настраиваете и кодируете видео.

О, и если вам не нравится командная строка,Ручной тормозбесплатный кроссплатформенный инструмент, который делает то же самое. У него даже есть слайдер CRF:

введите описание изображения здесь

решение2

Попробуйте HandBrake CLI

Я хотел сжать несколько MOV-файлов и не захотел вникать во все подробности о параметрах видео.HandBrake CLIэто то, что я использовал. Пресеты хорошие:

HandBrake предлагает жестко запрограммированные заводские пресеты, которые точно такие же, как встроенные пресеты в MacGui.

В моем случае это сработало отлично:

HandBrakeCLI -i input.MOV -o output.mp4 --preset="Normal"

Без предустановки вывод был очень маленьким, но не качественным. Предустановка "Normal" показалась мне хорошей, но вы можете увидеть другие доступные с помощью HandBrakeCLI --preset-list, или настроить все параметры самостоятельно, если хотите.

Связанный контент