我有一个接受并保存MP4视频文件的表单。我需要能够获得视频的尺寸。这将在运行ASP.NET 2.0的服务器上运行,因此任何外部库都必须能够放在Bin文件夹中,因为它们无法安装在服务器上。
任何想法如何获取信息?如果相同的lib会让我将视频转码为flv,这将是一个巨大的奖励。
更新:服务器是带有.NET Framework的XP Service Pack 2(2,0,50727,0)
答案 0 :(得分:2)
有几种方法可以做到这一点,但是对于任何/所有.mp4视频文件,没有可用于C#的库本身。这不是100%可靠的。
两者都是命令行选项(在某种意义上)。基本上,您要做的是使用System.Diagnostics.Process从ASP.NET应用程序运行进程。
他们就是使用ffmpeg。使用ffmpeg,如果你只是给它一个文件(作为命令行参数,如果将返回有关该文件的各种元数据。可以解析此信息以提取维度。
另一种是使用MediaInfo。这是一个很好的工具。但同样,您将不得不使用命令行版本(CLI版本),并且几乎将文件名作为命令行参数。它具有生成和xml响应的功能,因此您可以轻松解析此信息和其他信息(如果可以提供)。
ffmpeg也可以对您的视频进行转码。虽然我没有看到从mp4转码的重点。 FLV?
答案 1 :(得分:-1)
Alturos.VideoInfo是ffprobe的包装,可以很容易地集成到C#项目中。
可以从NuGet这样安装:
append/3
要使用它,您需要ffprobe.exe。如果它不在您的项目中,则可以运行以下代码进行下载:
PM> Install-Package Alturos.VideoInfo
然后可以通过获取视频流轻松检索视频的尺寸:
var ffmpegDownloader = new FileDownloader();
var ffmpegUrl = ffmpegDownloader.GetFfmpegPackageUrl();
var ffmpegDownloadResult = await ffmpegDownloader.DownloadAsync(ffmpegUrl, @"ffprobe\ffprobe.exe");
var ffprobePath = ffmpegDownloadResult.FfprobePath;