Почему Handbrake, сжимая видео с DVD, может получить размер 300 МБ, 1 ГБ или 2 ГБ, когда оригинал должен быть всего 600 МБ?

Почему Handbrake, сжимая видео с DVD, может получить размер 300 МБ, 1 ГБ или 2 ГБ, когда оригинал должен быть всего 600 МБ?

Handbrake может конвертировать DVD-клип, который длится около 30 минут, в .mkvфайл размером 300 МБ. Для эксперимента я также пробовал размер файла 1 ГБ и 2 ГБ, и оба они выходили как 1 ГБ или 2 ГБ.

Но я предполагаю, что исходное видео на DVD должно быть всего около 600 МБ, так как же оно может сделать файл «больше, чем он был раньше»? (форматы mkv, mp4 должны обеспечивать лучшее сжатие, чем mpeg2 на DVD).

Я также помню, что пробовал экспериментировать с divx или xvid раньше, и там было ограничение на размер файла: например, я мог указать 1,5-часовому видео 3 ГБ или 8 Мбит/с, но у контента просто не было столько "бит" для хранения (потому что он может сильно сжимать видео), поэтому конечный файл не мог превышать 1,8 ГБ или что-то в этом роде, независимо от того, насколько высок битрейт или желаемый размер файла я ему задал. Но с Handbrake, похоже, я могу создать файл 1 ГБ или 2 ГБ с таким коротким клипом. Почему так?

решение1

Это связано с повышением/понижением частоты дискретизации.

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

Подожди!! Почему ты не можешь пойти?напрямуюв другой формат??

Ну, как бы вы? Сжатие идет с потерями, и для того, чтобыпониматькак сжать его, сначала нужнораспаковыватьего, чтобы увидеть, что он говорит!

Кроме того, вы не хотите, чтобы ваши алгоритмы разрастались; например, если вы конвертируете между 10 форматами, вам не нужно иметь 10 * 9 = 90 алгоритмов для сжатия и 90 для распаковки для преобразования из каждого формата в каждый другой формат, но вы бы предпочли иметь 10 алгоритмов для перехода в распакованный формат и еще 10 для перехода в другой сжатый формат.

Так что выиметьсначала распаковать. А после этого, это ваш выбор, как распаковывать заново — и неважно, что вы выберете, вы потеряете гораздо больше, чем если бы вы вообще ничего не делали.

т.е. Это немного наивный расчет, но если что-то сохраняет 50% оригинала, и вы распаковываете его и снова сжимаете, вы получаете 50% этого -- т.е. 25%. Это не охватывает некоторые другие аспекты, но это объясняет, почему пересжатие (т.е. транскодирование) являетсяредко рекомендуется; если вам это необходимо, попробуйте пережать оригинал, если это возможно.

Надеюсь, это имеет смысл.

решение2

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

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

Строго говоря, вы, вероятно, что-то выигрываете, имея 2 ГБ вместо 1 ГБ, даже для видео, начальный размер которого составляет 600 МБ, — хотя это, вероятно, не то, что вам нужно ни за какие деньги.

Исходное видео было сжато с помощью MPEG2 (для DVD), а не с помощью MKV. Различные системы сжатия имеют разные «артефакты». Каждое преобразование файла может в лучшем случае сохранить доступные детали. С изменением схемы сжатия неизбежно, что по крайней мере что-то теряется. С большим файлом потери меньше — даже с файлами, которые намного больше оригинала. Это означает, что вы с меньшей вероятностью потеряете все нежелательные артефакты предыдущей схемы сжатия.

Другой способ взглянуть на это...

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

Набор видеороликов, которые могут бытьв совершенствепредставленный в MPEG2 сильно отличается от набора видео, которые могут бытьв совершенствепредставлено в MKV. Даже если у вас идеальные кодеки, вы вряд ли идеально сохраните видео, конвертируя из одного метода сжатия в другой — даже конвертируя в гораздо более высокий битрейт.

решение3

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

Ответ Mehrdad'а попадает в точку. Чтобы напрямую перейти от MPEG2 (DVD) к H.264 (я предполагаю, что вы его используете), вам нужно написать программу специально для его преобразования. Что приводит к тому, о чем говорил Mehrdad. По сути, нужно написать универсальный алгоритм сжатия или написать кучу более простых. Ни один из них не кажется мне выигрышным решением.

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