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

StackOverflow https://stackoverflow.com/questions/315488

  •  10-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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, но вы можете захотеть больше или меньше. Эксперимент.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top