在.NET项目中包含MediaFile时遇到问题

ozxc1zmp  于 2023-10-21  发布在  .NET
关注(0)|答案(2)|浏览(151)

我从来没有使用过.NET或C#,所以这可能是一个简单的。我在Mac上从命令行运行这个项目,并使用VScode进行编辑。我使用dotnet new console -o myApp命令创建了一个应用程序。当我尝试dotnet run时得到的错误是:
Program.cs(3,7):错误CS 0246:找不到类型或命名空间名称“MediaFile”(是否缺少using指令或程序集引用?)[/Users/me/myApp/myApp.csproj]
构建失败。修复生成错误并再次运行。
这是我的代码。我试图使用一个名为MediaToolkit的库将视频从flv转换为mp4

using System;
using MediaToolkit; // installed using command: 'dotnet add package MediaFile'
// using MediaFile; doesn't work

namespace myApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var inputFile = new MediaFile {Filename = "/Users/me/Desktop/example.flv"};
            var outputFile = new MediaFile {Filename = "/Users/me/Desktop/example.mp4"};
            using (var engine = new Engine())
            {
                engine.Convert(inputFile, outputFile);
            }
        }
    }
}
bq9c1y66

bq9c1y661#

using MediaToolkit.Model;

试试这个命名空间。它在我的代码中工作。

j9per5c4

j9per5c42#

string FilePath = @"Path-of-your-file";
#region NReco Package  
FFProbe ffProbe = new NReco.VideoInfo.FFProbe();
MediaInfo videoInfo = ffProbe.GetMediaInfo(FilePath);
double durationInTotalMinutes = videoInfo.Duration.TotalMinutes
#endregion
#region OpenCvSharp Package
VideoCapture vidCapture = new VideoCapture(FilePath);
double totalFrameCount = vidCapture.Get(VideoCaptureProperties.FrameCount);
double framesPerSeconds = vidCapture.Get(VideoCaptureProperties.Fps);
double videoDurationInSeconds = totalFrameCount / framesPerSeconds;
#endregion
#region Mediatoolkit Package
var inputFile = new MediaFile { Filename = FilePath };
using (var engine = new Engine())
{
  engine.GetMetadata(inputFile);
}
int durationInMinutes = inputFile.Metadata.Duration.Minutes;
#endregion

确保使用namespace => using MediaToolkit.Model;

我试着安装3个软件包,唯一一个对我有用的是Mediatoolkit,我发现所有的人都推荐它

相关问题