Преобразуйте видео путем установки заключительного размера

Существует ли способ установить максимальный заключительный размер для преобразования видео с помощью ffmpeg (или какой-либо другой основанный на CLI видео преобразователь)?

Как то, если я имею видео 100 МБ и хочу преобразовать его в видео 10 МБ с возможным высшим качеством, полагая, что заключительный формат не важен.

2
задан 23 April 2018 в 07:53

2 ответа

Движение от 100 МБ до 10 МБ является немного нереалистичным 90%-м понижением размера, но я дам пример сокращения до 50 МБ, создающих видео H.264, которое является более разумным 50%-м сокращением размера, а также уменьшающий до 40 МБ с помощью HEVC.

Я использую следующий файл примера:

wget http://dl3.h265files.com/TearsOfSteel_720p_h265.mkv

Можно использовать этот файл примера для подтверждения следующих результатов, которые я дал и возможно экспериментирую немного далее сами. MediaInfo показывает следующее для этого загруженного файла:

mediainfo \
--Inform="General;Duration=%Duration/String3%\nFile size=%FileSize/String1%" \
TearsOfSteel_720p_h265.mkv
Duration=00:12:14.058   <-----
File size=101 MiB       <-----

Стрелки, конечно, являются моим собственным! У Вас затем, возможно, есть 2 действительно хороших варианта:

  1. Повторно закодируйте к H.264
  2. Повторно закодируйте к HEVC

1. Повторно закодируйте к H.264 (50 МБ)

H.264 широко принят теперь и был бы отличным выбором для Вашего выходного видеофайла. Формула для вычисления выходной скорости передачи для желаемых 50 МБ затем была бы:

(50 MiB * 8192 [converts MiB to kBit]) / 734 seconds = ~558 kBit/s total bitrate
558 - 128 kBit/s (desired audio bitrate) = 430 kBit/s video bitrate

Выполнять это использование следующая команда передачи FFmpeg 2:

ffmpeg -y -i TearsOfSteel_720p_h265.mkv \
      -c:v libx264 -b:v 430k -pass 1 \
      -c:a libmp3lame -b:a 128k -f mp4 /dev/null && \
ffmpeg -i TearsOfSteel_720p_h265.mkv \
       -c:v libx264 -b:v 430k -pass 2 \
       -c:a libmp3lame -b:a 128k TearsOfSteel_smaller.mp4

Получающийся размер файла составляет 49.4 МиБ с довольно разумным, но не удивительный, просматривая качество. Довольно хороший для 50%-го сокращения размера файла и огромного понижения видео скорости передачи на самом деле!

2. Повторно закодируйте к HEVC (40 МБ)

Другой выбор (как предложено emk2203) состоит в том, чтобы повторно закодировать существующий поток HEVC более низкой скоростью передачи, на этот раз стремясь к 40 МБ, поскольку HEVC требует лучшего качества в более низкой скорости передачи.

На этот раз формула была бы:

(40 MiB * 8192 [converts MiB to kBit]) / 734 seconds = ~446 kBit/s total bitrate
446 - 128 kBit/s (desired audio bitrate) = 318 kBit/s video bitrate

и командная строка передачи FFmpeg 2:

ffmpeg -y -i TearsOfSteel_720p_h265.mkv \
      -c:v libx265 -x265-params pass=1 -b:v 318k \
      -c:a libmp3lame -b:a 128k -f mp4 /dev/null && \
ffmpeg -i TearsOfSteel_720p_h265.mkv \
       -c:v libx265 -x265-params pass=2 -b:v 318k \
       -c:a libmp3lame -b:a 128k TearsOfSteel_smaller.mp4

И это предоставляет файлу 40 МБ довольно разумное качество.

В заключении:

От них пример можно экспериментировать далее путем уменьшения необходимого мебибайт в формуле и наблюдения последующего качества просмотра.развлекайтесь!!

Ссылки:

7
ответ дан 2 December 2019 в 01:36

Да. Выберите видеокодек (x264 хороший универсальный), и выберите разрешение, оставьте большинство настроек в значении по умолчанию, но сделайте преобразование с 2 передачами со средней скоростью передачи набора.

Быстрый урок в сжатии видео: видео сложность изменяется всюду по видео, поэтому при сжатии до того же визуального уровня качества целого пути через фактическая скорость передачи собирается колебаться вверх и вниз. Если Вы сжимаетесь до фиксированной скорости передачи, качество будет плохим в битах высокой сложности, потому что скорость передачи является слишком низкой, и/или используемая скорость передачи будет слишком высока для частей низкой сложности. Таким образом, как, хотя Вы можете Вы позволять ему стремиться к постоянному качеству и позволить скорости передачи колебаться, как это может. Но если компрессор стремится к конкретному размеру файла, он не знает, собирается ли видео сложность повыситься, или вниз в частях он еще не преобразовал, таким образом, вот почему люди используют 2 преобразования передачи при стремлении к конкретному размеру файла.

Необходимо указать вывод как скорость передачи (аудио, и видео, плюс контейнер имеет небольшие издержки), таким образом, Вам нужен калькулятор для преобразования из размера файла и продолжительности к скорости передачи.

0
ответ дан 2 December 2019 в 01:36

Другие вопросы по тегам:

Похожие вопросы: