如何获取mp4视频文件的尺寸?

时间:2011-02-23 00:53:20

标签: c# asp.net video asp.net-2.0

我有一个接受并保存MP4视频文件的表单。我需要能够获得视频的尺寸。这将在运行ASP.NET 2.0的服务器上运行,因此任何外部库都必须能够放在Bin文件夹中,因为它们无法安装在服务器上。

任何想法如何获取信息?如果相同的lib会让我将视频转码为flv,这将是一个巨大的奖励。

更新:服务器是带有.NET Framework的XP Service Pack 2(2,0,50727,0)

2 个答案:

答案 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;