Windows (в идеале .NET вызываемый) API для объединения файлов MP4 и / или 3GP? - PullRequest
1 голос
/ 16 октября 2008

Я работаю над нашим сервисом внутреннего кодировщика, который выполняет очень много транскодирования видео и очень мало объединяет видеофайлы.

Транскодирование выполняется с использованием движка On2 Flix для Windows, который работает очень хорошо, но, к сожалению, он не может объединять файлы (по крайней мере, насколько я могу убедиться - ни помощь, ни поддержка не очень информативны). Я доволен этим пока.

В настоящий момент соединение осуществляется с помощью программного обеспечения LEADTOOLS Multimedia, которое, честно говоря, ужасно. Он однопоточный и требует STA, поскольку использует насос сообщений, что не совсем желательно для серверного приложения. Кроме того, при установке все наши рабочие кодеки перезаписываются загрузкой собственных eval-кодов, и избежать этого невозможно.

В идеале я ищу API для замены мультимедийного LEADTOOL, который может объединять файлы 3GP и / или MP4. Стоимость не слишком большая проблема. У кого-нибудь есть рекомендации?

Я знаю, что идеальное решение - написать собственный инструмент здесь, но мы собираемся сделать это в WMF и еще не полностью перешли на Win2008, поэтому нам нужно временное решение на пару месяцев.

Обновление:

Я должен отметить, что кодирование ни в коем случае не является моей областью компетенции, и я никогда не сталкивался с тем, что неуправляемый код является относительно новым для отрасли (7 лет). У меня также не так много времени, потому что моя дневная работа - это команда разработчиков уровня обслуживания / кодировщика, которая состоит только из меня и еще одного человека, поэтому у нас просто нет много времени, чтобы тратить на кодировщик ,

Что-то вроде движка Flix, где большая часть базовой сложности уже обработана, - это больше, чем я ищу, это низкоуровневые API, которые должны вызываться по-разному в зависимости от типов файлов ввода-вывода и т. Д.

Если у вас есть какие-либо рекомендации, было бы очень полезно, если бы вы указали мне несколько документов о том, как они используются и т. Д.

Ответы [ 2 ]

2 голосов
/ 16 октября 2008

libfcodec и libavformat от FFMPEG - ваш друг. Они чрезвычайно универсальны и поддерживают больше, чем все остальное, и фактически являются кроссплатформенным стандартом для поддержки и управления мультимедиа.

Вы также можете попробовать библиотеку MP4box, GPAC, которая является MP4-специфичной библиотекой, которая намного мощнее API FFMPEG, но полезна (при названии) только для обработки файлов MP4 и 3GP.

Кроме того, если вы используете Flix для транскодирования, рассматривали ли вы возможность перехода на что-то более современное? FLV1 и VP6 - довольно дрянные форматы для видео Flash; теперь, когда Flash поддерживает H.264, нет никаких оснований продолжать использовать такие устаревшие (а в случае VP6 - дорогие) форматы.

0 голосов
/ 17 октября 2008

Для x264: вы можете просто вызвать сам исполняемый файл или включить саму библиотеку и вызывать ее через ее API (encoder_open и т. Д.). С .NET это, вероятно, сложнее; Будучи программой на C, ее API построен на C, хотя я знаю, что программы на C и C ++ для Windows и Linux были созданы для вызова API.

Для простой программы нет реального преимущества друг перед другом: в любом случае, x264 принимает только один тип ввода (необработанное видео YV12) и выдает один тип вывода (элементарные потоки H.264 в случае с приложением CLI оно также может включать мультиплексирование MP4 и Matroska).

Если вам нужно решение «все в одном», ffmpeg может выполнить эту работу, поскольку он может автоматически обрабатывать декодирование и передавать кодировку в libx264. Если вам нужна более конкретная помощь, зайдите на # x264 в Freenode IRC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...