2008-11-24 9 views
1

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

+0

Извините, я, возможно, немного поспешил предположить, что он хотел пиратировать фильм. Как мне открыть вопрос? –

+0

Вы просто нажмете «Открыть» ... прямо там, где вы нажали «Закрыть». – EBGreen

ответ

0

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

2

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

Для Windows:

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

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

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

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

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

для Linux (а также окна):

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

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

2

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

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

target bit-rate = size/seconds 

Например:

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

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

0

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

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