从 Web 应用程序中的视频/音频文件获取持续时间(asp.net core)

Dim*_*dis 1 c# metadata asp.net-core-mvc

这个问题是关于 asp.net WEB 应用程序,而不是关于 .net windows 应用程序。在我的应用程序中,我使用 asp.net core 上传视频文件 (mp4)。

我需要从此视频文件中获取元数据,但现在我关注的是该视频文件的持续时间。

我已经创建了表单,并且在我的控制器中我成功接收了一个IFormFile file对象。我可以通过调用 .length 方法 ( file.Length) 来找到文件的大小,但我真的很难获得确切的日期,尤其是该对象的持续时间。

如何确定该对象的确切日期和持续时间?

这是我的代码:

    public async Task UploadVideos(IList<IFormFile> files)
    {
        long size = files.Sum(f => f.Length);
        Console.WriteLine("The size of all the selected files is:"+size);

        Console.WriteLine("the file name is" + files[0].FileName);


        string type = files[0].ContentType;
        if (type.Equals("video/mp4"))
        {
            Console.WriteLine("Indeed a mp4 format");
        }

    }
Run Code Online (Sandbox Code Playgroud)

mah*_*tse 6

抱歉回复晚了,以下是如何获取视频上传后的持续时间,

您可以使用NReco,提供的链接有一个关于如何获取视频信息的很好的小示例,

var ffProbe = new NReco.VideoInfo.FFProbe();
var videoInfo = ffProbe.GetMediaInfo(pathToVideoFile);
Console.WriteLine(videoInfo.FormatName);
Console.WriteLine(videoInfo.Duration);
Run Code Online (Sandbox Code Playgroud)

唯一的问题是商业用途的许可。

您可以尝试的另一个是 mediatoolkit 我以前使用过它,它效果很好,特别是对于您正在寻找的功能,一个简单的用法是

var inputFile = new MediaFile { Filename = video_name };

        using (var engine = new Engine())
        {
            engine.GetMetadata(inputFile);   
       }
Run Code Online (Sandbox Code Playgroud)

示例图像显示了调用 getmetadata 方法的输出, 视频数据

MediaToolkit 使用MIT 许可证

以上都是c++ FFmpeg库的包装