保存C#VLC截图

时间:2013-07-19 23:56:45

标签: c# vlc

我经历过多个图书馆并且一直在浏览和研究,每次图书馆都没有完成,没有文档或它不起作用。如何在C#应用程序中打开视频文件并转储随机屏幕截图?

1 个答案:

答案 0 :(得分:5)

我不确定如何使用VLC播放器执行此操作,但您可以使用ffmpeg:

从这里下载ffpmeg:http://www.ffmpeg.org/download.html

如果您正在使用Windows从Windows版本下载static版本:http://ffmpeg.zeranoe.com/builds/

这为您提供了一个独立的.exe文件,而不是整堆文件。


手动运行ffmpeg

在没有C#的情况下使用它可以打开控制台窗口并运行命令,如下所示:

ffmpeg -i "AngularJS - Part 1 - Hello Angular.mp4" -ss 00:02:25.435 -f image2 -vframes 1 screenshot.jpg

00:02:25.435部分实际上是长时间代码,格式如下:

小时:分钟:秒。帧百分比

如果您希望框架在5秒后传入:00:00:05.000

如果您想要2分38秒,第12帧。你会做00:02:38.480

要计算帧百分比,请执行frame / frame rate,即12 / 25,即0.48

生成屏幕抓取。


在C-Sharp中运行ffmpeg

现在,如果你想在一个应用程序中这样做,你可以这样做:

static void Main(string[] args)
{
    var process = new System.Diagnostics.Process();
    var startInfo = new System.Diagnostics.ProcessStartInfo
    {
        WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden,
        WorkingDirectory = "C:/Users/Phillip/Desktop/ffpmeg sample/",
        FileName = "cmd.exe",
        Arguments = "/C ffmpeg -i \"AngularJS - Part 1 - Hello Angular.mp4\" -ss " +
                    "00:02:25.435 -f image2 -vframes 1 \"screenshot-from-app.jpg\""
    };
    process.StartInfo = startInfo;
    process.Start();

    Console.ReadKey();
}

所以我们创建一个新进程,运行一个命令,它恰好是我们手动运行的命令,除了我们前缀/C导致它运行命令然后终止控制台窗口

您可以从ffmpeg网站获取有关获取屏幕抓取的更多信息:

http://ffmpeg.org/trac/ffmpeg/wiki/Create%20a%20thumbnail%20image%20every%20X%20seconds%20of%20the%20video

http://ffmpeg.org/trac/ffmpeg/wiki