【问题标题】:How to get video duration from mp4,m3u8 or any other file如何从 mp4、m3u8 或任何其他文件获取视频时长
【发布时间】:2017-10-27 06:39:43
【问题描述】:

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

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

2] 之后导入命名空间"using NReco.VideoInfo"

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

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

here你可以看到其他选项

【问题讨论】:

标签: c# video m3u8 nreco


【解决方案1】:

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

using WMPLib;

public Double getDuration(String path)
{
    WindowsMediaPlayer wmp = new WindowsMediaPlayerClass();
    IWMPMedia mediaInfo = wmp.newMedia(file);
    return mediaInfo.duration;
}

【讨论】:

    【解决方案2】:

    如果您的意思是来自本地文件,以下将显示不加载整个视频文件的持续时间(在 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>

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

    【讨论】:

    • 好点!我不确定自己为什么要这样回答,现在看着它,直到我在编辑之前检查了原始版本,它也有一个 asp.net 标签。
    猜你喜欢
    • 1970-01-01
    • 2020-09-14
    • 2012-04-28
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 2011-04-25
    • 2016-07-29
    • 1970-01-01
    相关资源
    最近更新 更多