欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#讀取視頻的寬度和高度等信息的方法

 更新時間:2014年11月17日 10:38:10   投稿:shichen2014  
這篇文章主要介紹了C#讀取視頻的寬度和高度等信息的方法,通過執(zhí)行一條CMD命令來實現(xiàn)讀取視頻寬度和高度的功能,具有不錯的實用價值,需要的朋友可以參考下

本文實例講述了C#讀取視頻的寬度和高度等信息的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:

讀取方式:使用ffmpeg讀取,所以需要先下載ffmpeg。網(wǎng)上資源有很多。

通過ffmpeg執(zhí)行一條CMD命令可以讀取出視頻的幀高度和幀寬度信息。

運行效果如下圖所示:

藍線框中可以看到獲取到的幀高度和幀寬度。

接下來的事情就簡單了。構(gòu)造一個命令,然后執(zhí)行就ok。我并未測試過所有視頻格式,估計常見的格式應(yīng)該都支持。

執(zhí)行命令的代碼如下:

復(fù)制代碼 代碼如下:
/// <summary>
/// 執(zhí)行一條command命令
/// </summary>
/// <param name="command">需要執(zhí)行的Command</param>
/// <param name="output">輸出</param>
/// <param name="error">錯誤</param>
public static void ExecuteCommand(string command,out string output,out string error)
{
    try
    {
 //創(chuàng)建一個進程
 Process pc = new Process();
 pc.StartInfo.FileName = command;
 pc.StartInfo.UseShellExecute = false;
 pc.StartInfo.RedirectStandardOutput = true;
 pc.StartInfo.RedirectStandardError = true;
 pc.StartInfo.CreateNoWindow = true;

 //啟動進程
 pc.Start();

 //準(zhǔn)備讀出輸出流和錯誤流
 string outputData = string.Empty;
 string errorData = string.Empty;
 pc.BeginOutputReadLine();
 pc.BeginErrorReadLine();
 
 pc.OutputDataReceived += (ss, ee) =>
     {
  outputData += ee.Data;
     };

 pc.ErrorDataReceived += (ss, ee) =>
     {
  errorData += ee.Data;
     };
 
 //等待退出
 pc.WaitForExit();

 //關(guān)閉進程
 pc.Close();

 //返回流結(jié)果
 output = outputData;
 error = errorData;
    }
    catch(Exception)
    {
 output = null;
 error = null;
    }
}

獲取高度的寬度的代碼如下:(這里假設(shè)ffmpeg存在于應(yīng)用程序目錄)

復(fù)制代碼 代碼如下:
/// <summary>
/// 獲取視頻的幀寬度和幀高度
/// </summary>
/// <param name="videoFilePath">mov文件的路徑</param>
/// <returns>null表示獲取寬度或高度失敗</returns>
public static void GetMovWidthAndHeight(string videoFilePath, out int? width, out int? height)
{
    try
    {
 //判斷文件是否存在
 if (!File.Exists(videoFilePath))
 {
     width = null;
     height = null;
 }

 //執(zhí)行命令獲取該文件的一些信息
 string ffmpegPath = new FileInfo(Process.GetCurrentProcess().MainModule.FileName).DirectoryName + @"\ffmpeg.exe";

 string output;
 string error;
 Helpers.ExecuteCommand("\"" + ffmpegPath + "\"" + " -i " + "\"" + videoFilePath + "\"",out output,out error);
 if(string.IsNullOrEmpty(error))
 {
     width = null;
     height = null;
 }

 //通過正則表達式獲取信息里面的寬度信息
 Regex regex = new Regex("(\\d{2,4})x(\\d{2,4})", RegexOptions.Compiled);
 Match m = regex.Match(error);
 if (m.Success)
 {
     width = int.Parse(m.Groups[1].Value);
     height = int.Parse(m.Groups[2].Value);
 }
 else
 {
     width = null;
     height = null;
 }
    }
    catch (Exception)
    {
 width = null;
 height = null;
    }
}

希望本文所述對大家的C#程序設(shè)計有所幫助。

相關(guān)文章

  • VS中模仿WPF模板創(chuàng)建最簡單的WPF程序

    VS中模仿WPF模板創(chuàng)建最簡單的WPF程序

    這篇文章主要為大家詳細(xì)介紹了VS中模仿WPF模板創(chuàng)建最簡單的WPF程序的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-05-05
  • C#實現(xiàn)JSON字符串序列化與反序列化的方法

    C#實現(xiàn)JSON字符串序列化與反序列化的方法

    在這篇文章中,我們將會學(xué)到如何使用C#,來序列化對象成為Json格式的數(shù)據(jù),以及如何反序列化Json數(shù)據(jù)到對象。
    2017-01-01
  • C#中DataTable實現(xiàn)行列轉(zhuǎn)換的方法

    C#中DataTable實現(xiàn)行列轉(zhuǎn)換的方法

    這篇文章主要介紹了C#中DataTable實現(xiàn)行列轉(zhuǎn)換的方法,實例分析了C#操作DataTable的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • C# HttpClient上傳文件并附帶其它參數(shù)方式

    C# HttpClient上傳文件并附帶其它參數(shù)方式

    這篇文章主要介紹了C# HttpClient上傳文件并附帶其它參數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • c#?定期重啟程序操作的實現(xiàn)

    c#?定期重啟程序操作的實現(xiàn)

    本文主要介紹了c#?定期重啟程序操作的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • C#中嵌入SQLite數(shù)據(jù)庫的簡單方法

    C#中嵌入SQLite數(shù)據(jù)庫的簡單方法

    本文給大家介紹的是C#中嵌入SQLite數(shù)據(jù)庫的簡單方法,十分的方便也很實用,有需要的小伙伴可以參考下。
    2015-06-06
  • C# ref and out的使用小結(jié)

    C# ref and out的使用小結(jié)

    這篇文章主要介紹了C# ref and out的使用小結(jié),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#利用DesignSurface如何實現(xiàn)簡單的窗體設(shè)計器

    C#利用DesignSurface如何實現(xiàn)簡單的窗體設(shè)計器

    這篇文章主要介紹了C#利用DesignSurface如何實現(xiàn)簡單窗體設(shè)計器的相關(guān)資料,文中通過圖文及示例代碼介紹的很詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-02-02
  • WPF調(diào)用ffmpeg實現(xiàn)屏幕錄制

    WPF調(diào)用ffmpeg實現(xiàn)屏幕錄制

    這篇文章主要為大家詳細(xì)介紹了WPF如何調(diào)用ffmpeg實現(xiàn)屏幕錄制,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下
    2023-05-05
  • c#程序刪除自身代碼示例分享

    c#程序刪除自身代碼示例分享

    偶然看到一個可以自刪除的程序,于是了解下如何實現(xiàn)。然后整理如下,需要的朋友可以參考下
    2014-03-03

最新評論