0

我发现 NReco.VideoInfo 库是最好的选择而且更简单

1] 在 NuGet 包管理器中找到 NReco.VideoInfo 库并将其导入您的项目中

2] 之后导入命名空间“使用 NReco.VideoInfo”

3]将以下代码行添加到方法中。

var ffProbe = new FFProbe();
var videoInfo = ffProbe.GetMediaInfo(blob.Uri.AbsoluteUri);
return videoInfo.Duration.TotalMilliseconds;

在这里你可以看到一些其他的选项

4

2 回答 2

3

为什么不使用 windows 媒体播放器来解决这个问题呢?

using WMPLib;

public Double getDuration(String path)
{
    WindowsMediaPlayer wmp = new WindowsMediaPlayerClass();
    IWMPMedia mediaInfo = wmp.newMedia(file);
    return mediaInfo.duration;
}
于 2017-10-27T06:40:57.017 回答
0

如果您的意思是来自本地文件,以下将显示持续时间而不加载整个视频文件(在 mp4 上测试):

var inputBox = document.getElementById("videoInput")

inputBox.onchange = function(files)  {
  alert("starting")
  var video = document.createElement('video');
  alert("video created")
  video.preload = 'metadata';
  video.onloadedmetadata = function() {
    alert("metadata loaded")
    var duration = video.duration;
    alert("duration is " + duration)
  }
  var selectedVID = document.getElementById("videoInput").files[0];
  video.src = URL.createObjectURL(selectedVID);
}
<div id="input-upload-file">
  <p>
  Video Upload Duration test
  </p>
  <input id="videoInput" type="file" class="upload" name="fileUpload">
</div>

同样的方法也适用于流式视频。

于 2017-10-27T13:56:30.500 回答