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

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

4 ответа

Решение

AutoGK может сделать это очень эффективно. Первоначально разработан для резервного копирования DVD ****cough****, но он также будет принимать AVI в качестве источника. Это скорее набор программ с открытым исходным кодом с координирующим графическим интерфейсом, так что не беспокойтесь, когда установщик установит несколько элементов.

Я предполагаю, что вы хотите сделать это программно:

Для Windows:

Вы можете использовать DirectShow для перекодирования вашего видео, построив график фильтра.

Получите (если у вас его еще нет) платформу SDK для Windows. Затем просмотрите здесь, чтобы посмотреть некоторые примеры DirectShow, которые строят графы фильтров для транскодирования.

Для сборки вам понадобятся базовые классы. Вы можете построить их здесь:

C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses

Тогда посмотрите примеры здесь:

C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow

Вы также можете вручную создать графы фильтров, чтобы понять, как они используются, и посмотреть, как эти вещи имеют смысл (например, перечисление кодеров, о которых вы узнаете в примерах):

C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\graphedt.exe

После того, как вы зашли так далеко и поняли, как работает DirectShow, вы можете использовать математику, чтобы понять, как перекодировать видео, чтобы оно соответствовало желаемому размеру. Для этого вы можете посмотреть, сколько кадров / сек у вашего входного видео и насколько велик каждый кадр.

Разные кодировщики работают по-разному:

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

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

Для Linux (а также Windows):

Вы можете использовать ffmpeg, который является универсальным для транскодирования и прочего для видео. Вы даже можете найти готовый exe-файл приложения командной строки, хотя главная страница не содержит его (только исходный код). Это приложение использует видео библиотеки с открытым исходным кодом, чтобы сделать много транскодирования видео, а также многое другое. Если вы можете найти хороший надежный исполняемый файл, вы, вероятно, должны проверить это, если вы хотите что-то, что легко для вашего приложения. Проверьте их домашнюю страницу здесь.

Я надеюсь, это поможет вам начать.

Чтобы он соответствовал определенному размеру, вы должны использовать соответствующую скорость передачи данных.

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

target bit-rate = size / seconds

Например:

seconds = (90mins * 60) = 5400
size = ((650MB * 1024) * 8) = 5324800
target bit-rate = ~986 kilobytes per second

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

Рассчитайте количество секунд, в течение которого AVI. Затем возьмите размер файла и разделите на длину. Преобразование в килобиты в секунду, и использовать это как медиану битрейта. (Используйте Google, чтобы сделать математику и преобразование легко.)

Вы можете взвесить видео и аудио битрейт по своему желанию. Обычно 96 кбит / с достаточно хорошо с AAC, но вы можете захотеть больше или меньше. Эксперимент.

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