上传后获取视频的持续时间

15 c# asp.net video duration

什么是最好的方法?

我有一个用户将上传视频的字段.

单击上传按钮时,视频上传.这工作完美.

我需要物理路径的视频持续时间,我试过:

using WMPLib;
WindowsMediaPlayer wmp = new WindowsMediaPlayerClass();
IWMPMedia mediaInfo = wmp.newMedia(Server.MapPath("~/Uploads/test.mp4"));
double duration = mediaInfo.duration;
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我得到错误:

类型'WMPLib.WindowsMediaPlayerClass'没有定义构造函数,无法嵌入Interop类型'WMPLib.WindowsMediaPlayerClass'.

如何抓住持续时间?

Tom*_*uda 10

你可以使用这个nuget包:

Install-Package Xabe.FFMpeg
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用易于使用的跨平台FFmpeg包装器.

您可以在Xabe.FFmpeg找到更多相关信息

IMediaInfo mediaInfo = await MediaInfo.Get("videofile.mkv");
var videoDuration = mediaInfo.VideoStreams.First().Duration;
Run Code Online (Sandbox Code Playgroud)

有关获取视频文件持续时间的更多信息,请访问:https: //xabe.net/product/xabe_ffmpeg/#documentation


Dan*_*ran 2

借助 DirectShow.Net 包装器库,您可以使用 DirectShow APIMediaDet对象。该方法get_StreamLength以秒为单位获取视频长度,可以使用确定性算法将其转换为分钟/小时。要使用此 API,请确保您的操作系统上已安装 MPEG-4 依赖项。

或者您可以选择媒体信息库来从视频文件中获取信息。

请参阅使用 DirectShow.NET 包装器库的实现:获取视频长度