Программно получить продолжительность видео

Мне нужно получить продолжительность видео в формате mp4 (формат видео AVC)

Я использую DirectShowLib 2.1.

Я скачал пару кодеков, но все еще получаю код -2147220891 (код ошибки, который я не знаю, что он означает)

 graphBuilder.RenderFile(filePath, null);

Любая идея, как получить продолжительность такого видео?


person StackOverflower    schedule 15.07.2010    source источник
comment
В шестнадцатеричном формате это будет 0x80040265.   -  person ChrisF    schedule 16.07.2010
comment
Почему это актуально?   -  person ToFo    schedule 27.10.2016


Ответы (2)


-2147220891 — это 0x80040265 в шестнадцатеричном формате. Поиск по этому коду ошибки выявил эту тему.

0x80040265 на самом деле не «неизвестно». Строго говоря, это VFW_E_UNSUPPORTED_STREAM, что означает, что ваши файлы AVI содержат по крайней мере один поток (например, видео), для которого у вас нет подходящего кодека.

Так что, похоже, вы все еще не нашли нужный кодек.

Воспроизводится ли файл в проигрывателе Windows Media или VLC (например)?

person ChrisF    schedule 15.07.2010
comment
Это большая помощь. Извините за мое невежество, но как вы получаете этот номер: 0x80040265. Я сделал преобразование в шестнадцатеричное число 2147220891 и получил что-то еще - person StackOverflower; 16.07.2010
comment
@ Тимми - ты забыл включить знак минус в свое преобразование - это легко сделать. За годы я использовал достаточно API Microsoft, чтобы сделать это автоматически. Вы также можете переключить Visual Studio, чтобы он отображал шестнадцатеричный код в окне просмотра. - person ChrisF; 16.07.2010

Если вам просто нужна продолжительность файла, вы можете попробовать использовать IMediaDet. У меня есть пример использования здесь: http://wpfmediakit.codeplex.com/SourceControl/changeset/view/41623#245585

person Jeremiah Morrill    schedule 19.07.2010
comment
Спасибо, я посмотрю на это - person StackOverflower; 20.07.2010