以编程方式获得视频时长

问题描述 投票:1回答:3

我需要获取mp4视频(视频格式AVC)的视频时长

我正在使用DirectShowLib 2.1

我下载了一些编解码器,但仍收到代码-2147220891(错误代码,我不知道这是什么意思)

 graphBuilder.RenderFile(filePath, null);

知道如何获得这种视频的时长吗?

c# video directshow
3个回答
6
投票

-2147220891是十六进制的0x80040265。搜索该错误代码后显示this thread

0x80040265并不是真正的“未知”。严格来说是VFW_E_UNSUPPORTED_STREAM,这意味着您的AVI文件包含至少一个您没有正确编解码器的流(例如视频)。

因此您似乎仍然找不到正确的编解码器。

文件是否在Windows Media Player或VLC中播放?


1
投票

如果只需要文件的持续时间,则可以尝试使用IMediaDet。我在这里有一个用法示例:http://wpfmediakit.codeplex.com/SourceControl/changeset/view/41623#245585


0
投票

我试图以一些不同的方式来获取视频长度:实际上也使用Windows Media Player组件,我们可以获得视频的持续时间。以下代码段可能对您有所帮助:

using WMPLib;
// ...your code here...

var player = new WindowsMediaPlayer();
var clip = player.newMedia(filePath);
Console.WriteLine(TimeSpan.FromSeconds(clip.duration));

并且不要忘记添加wmp.dll的引用,该引用将是位于System32文件夹中。

© www.soinside.com 2019 - 2024. All rights reserved.