如何使用FFMPEG获取视频尺寸

时间:2011-07-20 06:49:49

标签: c# ffmpeg

我的目标是将视频文件传递给FFMPEG并将其尺寸作为输出。如何实现此目的。任何人都可以帮我解决示例代码吗?

3 个答案:

答案 0 :(得分:3)

public void GetVideoInfo(string input)
    {
        //  set up the parameters for video info.
        string @params = string.Format("-i {0}", input);
        string output = Run(ffmpegProcess, @params);

        //get the video format
        re = new Regex("(\\d{2,3})x(\\d{2,3})");
        Match m = re.Match(output);
        if (m.Success)
        {
            int width = 0; int height = 0;
            int.TryParse(m.Groups[1].Value, out width);
            int.TryParse(m.Groups[2].Value, out height);
        }
    }

private static string Run(string process/*ffmpegFile*/, string parameters)
    {
        if (!File.Exists(process))
            throw new Exception(string.Format("Cannot find {0}.", process));

        //  Create a process info.
        ProcessStartInfo oInfo = new ProcessStartInfo(process, parameters);
        //oInfo.UseShellExecute = false;
        //oInfo.CreateNoWindow = true;
        //oInfo.RedirectStandardOutput = true;
        //oInfo.RedirectStandardError = true;

        //  Create the output and streamreader to get the output.
        string output = null;
        //StreamReader outputStream = null;

        //  Try the process.
        //try
        //{
        //  Run the process.
        Process proc = System.Diagnostics.Process.Start(oInfo);

        proc.WaitForExit();

        //outputStream = proc.StandardError;
        //output = outputStream.ReadToEnd();    

        proc.Close();
        //}
        //catch( Exception ex )
        //{
        //    output = ex.Message;
        //}
        //finally
        //{
        //    //  Close out the streamreader.
        //    if( outputStream != null )
        //        outputStream.Close();
        //}
        return output;
    }

您应该取消注释一些代码才能使其正常工作。希望它有所帮助。

我的代码可以从视频,不同的转换器等获取更多信息。上面的代码是切片的,可能需要稍作修改。

答案 1 :(得分:1)

您是否尝试过FFMPEG-C# Library

答案 2 :(得分:0)

您应该使C#进程执行命令“ -i {0}”({0}是视频路径)执行ffprobe。

我不知道为什么,但是当在c#进程上运行ffmpeg时,ffmpeg总是在Errors通道中返回输出,因此您必须在进程完成后阅读StandardError Stream。

当我们得到输出字符串时,我们可以在其上运行Regex来找出分辨率。

src