У меня есть файл AVI, который я хочу перекодировать, чтобы он поместился на компакт-диске размером 650 МБ. Как я могу закодировать так, чтобы размер файла не превышал заданный размер? Какую программу я могу использовать?
Перекодируйте файл AVI, чтобы он соответствовал заданному размеру выходного файла.
Ответы (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, но вам может понадобиться больше или меньше. Эксперимент.