获取视频信息,处理视频

图片 1

获取视频信息,处理视频

  • .NET 处理视频-MediaInfo
    获取视频信息
  • .NET 处理视频-ffmpeg.exe
    获取视频信息
  • .NET 处理视频-ffmpeg.exe 抓取视频帧图像缩略图
  • .NET 处理视频-MediaInfo
    获取视频信息
  • .NET 处理视频-ffmpeg.exe 获取视频信息
  • .NET 处理视频-ffmpeg.exe
    抓取视频帧图像缩略图


请先阅读本连载前一节文章。

本节介绍的是用 ffmpeg.exe 来获取视频信息,这个不如 MediaInfo 方便。

本文也是用 Process 运行 ffmpeg.exe,只是跟的参数不同,实现的功能不同。

第一步、下载 ffmpeg.exe

int frameIndex = 0; string args = string.Format(” -i “{0}” -ss {1}
-vframes 1 -r 1 -ac 1 -ab 2 -s {2}*{3} -f image2 “{4}””, videoPath,
frameIndex, videoInfo.Width, videoInfo.Height, capturePath); using
(Process ffmpeg = new Process()) { ffmpeg.StartInfo.FileName =
ffmpegPath; ffmpeg.StartInfo.Arguments = args;
ffmpeg.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
ffmpeg.Start(); // 这里不能省略 Start() ffmpeg.WaitForExit();
ffmpeg.Close(); }

http://www.itpow.com/tools/downloads/ffmpeg.zip

注意:与前一节相比,我们使用了
Start();同时为了避免弹出命令提示符,使用了 ProcessWindowStyle.Hidden。

第二步、试验一下 ffmpeg.exe 如何工作的(可省略)

  • .NET 处理视频-MediaInfo
    获取视频信息
  • .NET 处理视频-ffmpeg.exe
    获取视频信息
  • .NET 处理视频-ffmpeg.exe 抓取视频帧图像缩略图

运行命令


D:>ffmpeg.exe -i “千一网络.MOV”

效果如下:

图片 1

我们可以看到,输出结果中包含了视频时长、格式、宽度、高度等信息。

第三步、写代码,用程序来获取输出的值

ProcessStartInfo startInfo = new ProcessStartInfo(exePath, arguments);
startInfo.UseShellExecute = false; // 要获取输出,此值必须为 false。
startInfo.CreateNoWindow = true; startInfo.RedirectStandardresult =
true; startInfo.RedirectStandardError = true; string result = “”; try {
using (Process process = Process.Start(startInfo)) { result =
process.StandardError.ReadToEnd(); // 注意,是:StandardError。 //
process.Start(); // 这里的 Start() 可省略,也可在 StandardError 前、后。
process.WaitForExit(); process.Close(); } } catch (Exception) { result =
“”; } return result;

注意,代码中是用 StandardError 这个属性来获取值的。还有,不用担心权限问题,只要有权限访问 ffmpeg.exe,Process 就可运行起来。

第四步、解析输出值

这个输出值是一串有格式的字符串,我们得自己写代码来解析,这里就不提供代码了。

  • .NET 处理视频-MediaInfo
    获取视频信息
  • .NET 处理视频-ffmpeg.exe 获取视频信息
  • .NET 处理视频-ffmpeg.exe
    抓取视频帧图像缩略图

admin

网站地图xml地图