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

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

Ответы [ 4 ]

2 голосов
/ 25 ноября 2008

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

Для 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-файл приложения командной строки, хотя на главной странице его нет (только исходный текст). Это приложение использует видео библиотеки с открытым исходным кодом, чтобы сделать много транскодирования видео, а также многое другое. Если вы можете найти хороший надежный исполняемый файл, вам, вероятно, стоит проверить это, если вы хотите что-то простое в использовании для вашего приложения. Проверьте их домашнюю страницу здесь.

Надеюсь, это поможет вам.

2 голосов
/ 25 ноября 2008

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

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

target bit-rate = size / seconds

Например:

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

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

0 голосов
/ 25 ноября 2008

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

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

0 голосов
/ 25 ноября 2008

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

...