亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#調用mmpeg進行各種視頻轉換的類實例

2020-01-24 02:06:25
字體:
來源:轉載
供稿:網友

本文實例講述了C#調用mmpeg進行各種視頻轉換的類。分享給大家供大家參考。具體如下:

這個C#類封裝了視頻轉換所需的各種方法,基本上是圍繞著如何通過mmpeg工具來進行視頻轉換

using System.Web;using System.Configuration;namespace DotNet.Utilities{  //if (this.fload.HasFile)  //{  //  string upFileName = HttpContext.Current.Server.MapPath("~/savefile") + "http://" + this.fload.PostedFile.FileName;  //  string saveName  = DateTime.Now.ToString("yyyyMMddHHmmssffff");  //  string playFile  = Server.MapPath(VideoConvert.savefile + saveName);  //  string imgFile  = Server.MapPath(VideoConvert.savefile + saveName);  //  VideoConvert pm = new VideoConvert();  //  string m_strExtension = VideoConvert.GetExtension(this.fload.PostedFile.FileName).ToLower();  //  if (m_strExtension == "flv")  //  {  //    System.IO.File.Copy(upFileName, playFile + ".flv");  //    pm.CatchImg(upFileName, imgFile);  //  }  //  string Extension = pm.CheckExtension(m_strExtension);  //  if (Extension == "ffmpeg")  //  {  //    pm.ChangeFilePhy(upFileName, playFile, imgFile);  //  }  //  else if (Extension == "mencoder")  //  {  //    pm.MChangeFilePhy(upFileName, playFile, imgFile);  //  }  //}  public class VideoConvert : System.Web.UI.Page  {    public VideoConvert()    { }    string[] strArrMencoder = new string[] { "wmv", "rmvb", "rm" };    string[] strArrFfmpeg = new string[] { "asf", "avi", "mpg", "3gp", "mov" };    #region 配置    public static string ffmpegtool = ConfigurationManager.AppSettings["ffmpeg"];    public static string mencodertool = ConfigurationManager.AppSettings["mencoder"];    public static string savefile = ConfigurationManager.AppSettings["savefile"] + "/";    public static string sizeOfImg = ConfigurationManager.AppSettings["CatchFlvImgSize"];    public static string widthOfFile = ConfigurationManager.AppSettings["widthSize"];    public static string heightOfFile = ConfigurationManager.AppSettings["heightSize"];    #endregion    #region 獲取文件的名字    /// <summary>    /// 獲取文件的名字    /// </summary>    public static string GetFileName(string fileName)    {      int i = fileName.LastIndexOf("http://") + 1;      string Name = fileName.Substring(i);      return Name;    }    #endregion    #region 獲取文件擴展名    /// <summary>    /// 獲取文件擴展名    /// </summary>    public static string GetExtension(string fileName)    {      int i = fileName.LastIndexOf(".") + 1;      string Name = fileName.Substring(i);      return Name;    }    #endregion    #region 獲取文件類型    /// <summary>    /// 獲取文件類型    /// </summary>    public string CheckExtension(string extension)    {      string m_strReturn = "";      foreach (string var in this.strArrFfmpeg)      {        if (var == extension)        {          m_strReturn = "ffmpeg"; break;        }      }      if (m_strReturn == "")      {        foreach (string var in strArrMencoder)        {          if (var == extension)          {            m_strReturn = "mencoder"; break;          }        }      }      return m_strReturn;    }    #endregion    #region 視頻格式轉為Flv    /// <summary>    /// 視頻格式轉為Flv    /// </summary>    /// <param name="vFileName">原視頻文件地址</param>    /// <param name="ExportName">生成后的Flv文件地址</param>    public bool ConvertFlv(string vFileName, string ExportName)    {      if ((!System.IO.File.Exists(ffmpegtool)) || (!System.IO.File.Exists(HttpContext.Current.Server.MapPath(vFileName))))      {        return false;      }      vFileName = HttpContext.Current.Server.MapPath(vFileName);      ExportName = HttpContext.Current.Server.MapPath(ExportName);      string Command = " -i /"" + vFileName + "/" -y -ab 32 -ar 22050 -b 800000 -s 480*360 /"" + ExportName + "/""; //Flv格式        System.Diagnostics.Process p = new System.Diagnostics.Process();      p.StartInfo.FileName = ffmpegtool;      p.StartInfo.Arguments = Command;      p.StartInfo.WorkingDirectory = HttpContext.Current.Server.MapPath("~/tools/");      p.StartInfo.UseShellExecute = false;      p.StartInfo.RedirectStandardInput = true;      p.StartInfo.RedirectStandardOutput = true;      p.StartInfo.RedirectStandardError = true;      p.StartInfo.CreateNoWindow = false;      p.Start();      p.BeginErrorReadLine();      p.WaitForExit();      p.Close();      p.Dispose();      return true;    }    #endregion    #region 生成Flv視頻的縮略圖    /// <summary>    /// 生成Flv視頻的縮略圖    /// </summary>    /// <param name="vFileName">視頻文件地址</param>    public string CatchImg(string vFileName)    {      if ((!System.IO.File.Exists(ffmpegtool)) || (!System.IO.File.Exists(HttpContext.Current.Server.MapPath(vFileName)))) return "";      try      {        string flv_img_p = vFileName.Substring(0, vFileName.Length - 4) + ".jpg";        string Command = " -i " + HttpContext.Current.Server.MapPath(vFileName) + " -y -f image2 -t 0.1 -s " + sizeOfImg + " " + HttpContext.Current.Server.MapPath(flv_img_p);        System.Diagnostics.Process p = new System.Diagnostics.Process();        p.StartInfo.FileName = ffmpegtool;        p.StartInfo.Arguments = Command;        p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;        try        {          p.Start();        }        catch        {          return "";        }        finally        {          p.Close();          p.Dispose();        }        System.Threading.Thread.Sleep(4000);        //注意:圖片截取成功后,數據由內存緩存寫到磁盤需要時間較長,大概在3,4秒甚至更長;        if (System.IO.File.Exists(HttpContext.Current.Server.MapPath(flv_img_p)))        {          return flv_img_p;        }        return "";      }      catch      {        return "";      }    }    #endregion    #region 運行FFMpeg的視頻解碼(絕對路徑)    /// <summary>    /// 轉換文件并保存在指定文件夾下    /// </summary>    /// <param name="fileName">上傳視頻文件的路徑(原文件)</param>    /// <param name="playFile">轉換后的文件的路徑(網絡播放文件)</param>    /// <param name="imgFile">從視頻文件中抓取的圖片路徑</param>    /// <returns>成功:返回圖片虛擬地址;失敗:返回空字符串</returns>    public string ChangeFilePhy(string fileName, string playFile, string imgFile)    {      string ffmpeg = Server.MapPath(VideoConvert.ffmpegtool);      if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(fileName)))      {        return "";      }      string flv_file = System.IO.Path.ChangeExtension(playFile, ".flv");      string FlvImgSize = VideoConvert.sizeOfImg;      System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);      FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;      FilestartInfo.Arguments = " -i " + fileName + " -ab 56 -ar 22050 -b 500 -r 15 -s " + widthOfFile + "x" + heightOfFile + " " + flv_file;      try      {        System.Diagnostics.Process.Start(FilestartInfo);//轉換        CatchImg(fileName, imgFile); //截圖      }      catch      {        return "";      }      return "";    }    public string CatchImg(string fileName, string imgFile)    {      string ffmpeg = Server.MapPath(VideoConvert.ffmpegtool);      string flv_img = imgFile + ".jpg";      string FlvImgSize = VideoConvert.sizeOfImg;      System.Diagnostics.ProcessStartInfo ImgstartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);      ImgstartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;      ImgstartInfo.Arguments = "  -i  " + fileName + " -y -f image2  -ss 2 -vframes 1 -s  " + FlvImgSize + "  " + flv_img;      try      {        System.Diagnostics.Process.Start(ImgstartInfo);      }      catch      {        return "";      }      if (System.IO.File.Exists(flv_img))      {        return flv_img;      }      return "";    }    #endregion    #region 運行FFMpeg的視頻解碼(相對路徑)    /// <summary>    /// 轉換文件并保存在指定文件夾下    /// </summary>    /// <param name="fileName">上傳視頻文件的路徑(原文件)</param>    /// <param name="playFile">轉換后的文件的路徑(網絡播放文件)</param>    /// <param name="imgFile">從視頻文件中抓取的圖片路徑</param>    /// <returns>成功:返回圖片虛擬地址;失敗:返回空字符串</returns>    public string ChangeFileVir(string fileName, string playFile, string imgFile)    {      string ffmpeg = Server.MapPath(VideoConvert.ffmpegtool);      if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(fileName)))      {        return "";      }      string flv_img = System.IO.Path.ChangeExtension(Server.MapPath(imgFile), ".jpg");      string flv_file = System.IO.Path.ChangeExtension(Server.MapPath(playFile), ".flv");      string FlvImgSize = VideoConvert.sizeOfImg;      System.Diagnostics.ProcessStartInfo ImgstartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);      ImgstartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;      ImgstartInfo.Arguments = "  -i  " + fileName + "  -y  -f  image2  -t  0.001  -s  " + FlvImgSize + "  " + flv_img;      System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);      FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;      FilestartInfo.Arguments = " -i " + fileName + " -ab 56 -ar 22050 -b 500 -r 15 -s " + widthOfFile + "x" + heightOfFile + " " + flv_file;      try      {        System.Diagnostics.Process.Start(FilestartInfo);        System.Diagnostics.Process.Start(ImgstartInfo);      }      catch      {        return "";      }      ///注意:圖片截取成功后,數據由內存緩存寫到磁盤需要時間較長,大概在3,4秒甚至更長;       ///這兒需要延時后再檢測,我服務器延時8秒,即如果超過8秒圖片仍不存在,認為截圖失敗;        if (System.IO.File.Exists(flv_img))      {        return flv_img;      }      return "";    }    #endregion    #region 運行mencoder的視頻解碼器轉換(絕對路徑)    /// <summary>    /// 運行mencoder的視頻解碼器轉換    /// </summary>    public string MChangeFilePhy(string vFileName, string playFile, string imgFile)    {      string tool = Server.MapPath(VideoConvert.mencodertool);      if ((!System.IO.File.Exists(tool)) || (!System.IO.File.Exists(vFileName)))      {        return "";      }      string flv_file = System.IO.Path.ChangeExtension(playFile, ".flv");      string FlvImgSize = VideoConvert.sizeOfImg;      System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(tool);      FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;      FilestartInfo.Arguments = " " + vFileName + " -o " + flv_file + " -of lavf -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=200:mbd=2:mv0:trell:v4mv:cbp:last_pred=1:dia=-1:cmp=0:vb_strategy=1 -vf scale=" + widthOfFile + ":" + heightOfFile + " -ofps 12 -srate 22050";      try      {        System.Diagnostics.Process.Start(FilestartInfo);        CatchImg(flv_file, imgFile);      }      catch      {        return "";      }      return "";    }    #endregion  }}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲无线码在线一区| 色婷婷综合成人av| 亚洲精品视频免费| 国产97在线|日韩| 久久夜色精品国产欧美乱| 国产亚洲成av人片在线观看桃| 伊人激情综合网| 欧美与欧洲交xxxx免费观看| 91丨九色丨国产在线| 热门国产精品亚洲第一区在线| 国产欧美日韩精品丝袜高跟鞋| 国产精品免费观看在线| 久久亚洲精品国产亚洲老地址| 国产97免费视| 亚洲二区中文字幕| 国产一区二区三区网站| 国产日韩在线看片| 一区二区三区精品99久久| 色伦专区97中文字幕| 日韩福利视频在线观看| 97精品国产97久久久久久免费| 日韩欧美国产网站| 91美女片黄在线观| 韩日欧美一区二区| 亚洲成人av在线播放| 久久精品中文字幕电影| 在线精品视频视频中文字幕| 国产91精品青草社区| 国产精品96久久久久久又黄又硬| 最新日韩中文字幕| 日韩女优在线播放| 91免费视频国产| 亚洲色图国产精品| 久久精品福利视频| 色多多国产成人永久免费网站| 超碰日本道色综合久久综合| 亚洲欧美日韩另类| 2019中文字幕免费视频| 国产v综合v亚洲欧美久久| 97超级碰在线看视频免费在线看| 亚洲成人黄色在线| 欧美大尺度电影在线观看| 国产成人aa精品一区在线播放| 色琪琪综合男人的天堂aⅴ视频| 97免费在线视频| 国产精品久久久久久久久男| 日韩av电影免费观看高清| 国产精品中文久久久久久久| 国产色婷婷国产综合在线理论片a| 97国产真实伦对白精彩视频8| 黑人与娇小精品av专区| 欧美激情精品在线| 中文字幕免费精品一区高清| 欧美在线观看视频| 国产免费成人av| 日韩中文字幕视频在线观看| 日韩av影院在线观看| 午夜精品久久久久久久99黑人| 中文字幕不卡av| 亚洲最大激情中文字幕| 久久资源免费视频| 自拍偷拍亚洲欧美| 国内精品在线一区| 亚洲人成网站999久久久综合| 中文字幕视频在线免费欧美日韩综合在线看| 久久国产精品久久精品| 亚洲欧美日韩中文视频| 久久国产精品久久久久久| 日韩免费精品视频| 日韩欧美中文免费| 久久视频在线直播| 日日狠狠久久偷偷四色综合免费| 国产欧美在线播放| 色综合天天综合网国产成人网| 国产精品色婷婷视频| 日本a级片电影一区二区| 成人性教育视频在线观看| 日韩av网站在线| 4388成人网| 尤物九九久久国产精品的特点| 亚洲美腿欧美激情另类| 黑人极品videos精品欧美裸| 精品国产91久久久久久老师| 国内成人精品视频| 久久免费视频在线观看| 欧美性猛交99久久久久99按摩| 青草青草久热精品视频在线网站| 日韩视频免费在线| 精品亚洲永久免费精品| 亚洲欧洲美洲在线综合| 国产日韩欧美中文在线播放| 国产精品成人一区| 亚洲精品成人久久久| 日韩在线视频一区| 日韩av观看网址| 精品五月天久久| 97av在线影院| 国产精品视频在线观看| 国产91在线播放精品91| 国产一区私人高清影院| 日韩精品中文字幕在线播放| 中文字幕视频一区二区在线有码| 精品在线观看国产| 亚洲一区中文字幕| 久久av红桃一区二区小说| 欧美激情乱人伦| 久久久久久久久久久av| 亚洲成人av在线播放| 日韩中文字幕av| 精品色蜜蜜精品视频在线观看| 成人日韩av在线| 日韩视频中文字幕| 91在线免费看网站| 一区二区三区国产视频| 欧美丰满片xxx777| 91av免费观看91av精品在线| 久久在精品线影院精品国产| 亚洲女人天堂网| 中文在线不卡视频| 国产精品偷伦一区二区| 4438全国亚洲精品在线观看视频| 中国人与牲禽动交精品| 91最新在线免费观看| 一夜七次郎国产精品亚洲| 91理论片午午论夜理片久久| 尤物yw午夜国产精品视频| 欧美精品在线网站| 亚洲成人黄色网| 国产精品免费一区豆花| 91国内精品久久| 日韩av最新在线观看| 亚洲香蕉av在线一区二区三区| 成人激情在线观看| 国产成人小视频在线观看| 亚洲精品视频二区| 欧美做受高潮电影o| 亚洲自拍小视频免费观看| 日韩中文字幕视频在线| 久久久久国产精品免费| 久久精品视频在线| 成人亲热视频网站| 久久久久久久97| 亚洲国产高清自拍| 欧美成人sm免费视频| 亚洲人成伊人成综合网久久久| 日韩电影免费在线观看| 成人疯狂猛交xxx| 久久久欧美精品| 亚洲有声小说3d| 欧美黑人xxxⅹ高潮交| 日韩视频永久免费观看| 国产一区私人高清影院| 国产成人精品日本亚洲| 亚洲精品成人av| 日韩电影免费观看中文字幕| 日韩一二三在线视频播| 亚洲国产精品va在线看黑人| 国产狼人综合免费视频| 日本韩国在线不卡| 91欧美精品午夜性色福利在线| 成人国产精品一区二区| 欧美激情欧美激情| 青青青国产精品一区二区| 国内精品小视频在线观看|