Используете FFMpeg для определения типа видео, а затем конвертируете?

Пытаюсь программно определить настоящий тип файла. Похоже, для этого нужно использовать, например, FFMPeg.

Я хочу определить, действительно ли загруженный файл является MP4 или FLV (для флэш-видео) [или WebM (для HTML5)]. Я знаю оператор -i в FFMPeg, но не знаю, что проверять.

Например:

Input #0, flv, from 'c:\www\data.aspbooru\image\0\40c24ba424d1334ef81c88c416ce794e.flv':

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'c:\www\data.aspbooru\image\0\8c1a747b5188349d92cca17a502d2d57.mp4':

Это выходы FFMPeg. Это все, что мне нужно проверить при фильтрации видео на флеш?

Итак, если ничего из этого не применимо. Как мне проверить наличие SWF-файла?

Input #0, swf, from 'c:\www\data.aspbooru\image\0\90447bd30d30ccb1474c0433e948d438.swf':
Duration: 00:07:16.08, start: 0.000000, bitrate: 63 kb/s
Stream #0.0: Audio: mp3, 44100 Hz, 2 channels, s16, 64 kb/s
Stream #0.1: Video: flv, yuv420p, 320x240, 25 fps, 25 tbr, 25 tbn, 25 tbc

Достаточно ли проверки Input #0, swf,? Он извлекает включенный flv, который мне не нужен.

Теперь мне также нужно проверить типы файлов, которые полностью НЕ являются видео, и типы файлов, которые являются видео, но могут быть преобразованы в mp4 с помощью h.264 (или Webm?). Я совершенно не понимаю, как это сделать.

Преобразованием можно управлять, но намек на это тоже было бы очень круто (преобразование h.264 и webm?).

Я ввожу случайный файл. Это все? c:\web.config: Invalid data found when processing input

РЕДАКТИРОВАТЬ: язык программирования не указан, потому что он не зависит от какого-либо языка программирования. Но я был бы признателен за ввод для конкретного языка: VB.NET. Вы можете предположить, что у меня уже есть логика процесса, и вывод есть в виде строки! Regex тоже было бы круто :)


person sinni800    schedule 22.10.2010    source источник


Ответы (2)


Определение типов

Возможно, вам повезет больше с MediaInfo.

Возьмите версию для командной строки и используйте ее так:

mediainfo --full --language=raw --output=xml

Это дает вывод XML, затем вы можете использовать XPath, чтобы получить поле «Кодек». Или, если XML вам не подходит, опустите '--output = xml', а затем напишите регулярное выражение для анализа вывода текста.

Для нераспознанных файлов это выглядит так, как будто он дает какой-то вывод, но определенно не будет иметь поля Кодек.

Конвертация видео

Для фактического преобразования видео FFmpeg - это швейцарский армейский нож кодирования видео и, вероятно, ваш лучший вариант.

На самом деле вам не нужно знать ввод, если вы знаете, какие выходные кодеки вам нужны.

Что-то вроде этого может помочь вам начать:

ffmpeg -i input.mov -vcodec libx264 -acodec libfaac -f mov out.mp4

Это даст вам MPEG-4 с видео H.264 и аудио AAC. Хотя есть много вариантов, чтобы настроить это, чтобы получить то, что вы хотите.

Этот сайт полезен для настройки параметров H.264.

Удачи!

person Darren Greaves    schedule 21.06.2011
comment
Ого. Я сделал это с выводом ffmpeg (пытаясь очистить его), но mediainfo только что принес мне гораздо лучшую альтернативу. - person sinni800; 22.06.2011
comment
Отличный вариант, француз, стоящий за MediaInfo, должен рассказать команде ffmpeg о выводе XML ... - person Marc; 09.01.2012
comment
Команда @Marc ffmpeg уже имеет ffprobe, который поддерживает несколько выходов, таких как json и xml. Пример команды Я обычно использую ffprobe -v quiet -print_format json -show_format -show_streams /path/to/file 2>&1 - person mente; 01.10.2013

Я бы попробовал несколько библиотек, так как вы получите лучшие результаты, чем Regex, и определите их для себя:

Надежная оболочка FFmpeg для C # /. NET

person B00MER    schedule 07.11.2010
comment
Есть собственно фантики? Я разберусь и приму ответ, если смогу решить проблему! - person sinni800; 08.11.2010