夜鹰教程网-程序员的加油站
 当前位置:文章中心 >> vs2022_vs2019_vs2017_vs2014_vs2012
asp.net如何将各种视频文件转换成.flv格式 (上)
夜鹰教程网 来源:www.yyjcw.com 日期:2016-11-23 18:47:34
asp.net如何将各种视频文件转换成.flv格式
 
首先,我们部署一下文件夹.在工程的目录下新建几个文件夹如下图: UpFiles文件夹是要保存你上传的文件,PlayFiles文件夹是用于你转换后保存的文件(用于网上播放) ImgFile文件夹是保存截取视频文件的图片,然后那两个mencoder和ffmpeg文件夹是视频转换工具.此视频转换也可叫做mencoder+ffmpeg视频转换. 首先,在配置文件中给这些文件夹进行路径的配置.如下
  1. <appSettings>
  2. <!--工具文件夹-->
  3. <add key="ffmpeg" value="ffmpeg/ffmpeg.exe"/>
  4. <add key="mencoder" value="mencoder/mencoder.exe"/>
  5. <add key="mplayer" value="mencoder/mplayer.exe"/>
  6. <!--上传文件的路径-->
  7. <add key="upfile" value="UpFiles"/>
  8. <!--上专文件图片路径-->
  9. <add key="imgfile" value="ImgFile"/>
  10. <!--上传文件图片大小-->
  11. <add key="CatchFlvImgSize" value="240x180"/>
  12. <add key="widthSize" value="400"/>
  13. <add key="heightSize" value="350"/>
  14. <!--转换后文件路径-->
  15. <add key="playfile" value="PlayFiles"/>
  16. </appSettings>
复制代码
在上传.ASPX页面中
  1. 标题:<asp:TextBox ID="txtTitle" runat="server" Width="358px"></asp:TextBox>
  2. <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtTitle"
  3. ErrorMessage="标题不为空"></asp:RequiredFieldValidator>
  4. <br />
  5. <asp:FileUpload ID="FileUpload1" runat="server" Width="339px" />
  6. <asp:Button ID="btnUpload" runat="server" OnClick="btnUpload_Click" Text="上传视频" Width="70px" />
  7. 文件类型<span style="color:Red;">(.asf|.flv|.avi|.mpg|.3gp|.mov|.wmv|.rm|.rmvb)</span>
  8. <asp:RegularExpressionValidator ID="imagePathValidator" runat="server" ErrorMessage="文件类型不正确"
  9. ValidationGroup="vgValidation" Display="Dynamic" ValidationExpression="^[a-zA-Z]:(\\.+)(.asf|.flv|.avi|.mpg|.3gp|.mov|.wmv|.rm|.rmvb)$"
  10. ControlToValidate="FileUpload1">
  11. </asp:RegularExpressionValidator>
  12. <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="FileUpload1"
  13. ErrorMessage="文件不为空"></asp:RequiredFieldValidator></div>
  14. <div style=" height:0px; border-top:solid 1px red; font-size:0px;"></div>
  15. <div>上传列表.</div>
复制代码
程序工作的原理是:视频先上传上去,然后跟着就是开始转换. 所以.在CS 文件中有这里为了方便我是用sqlDatasource数据控件做数据的操作.

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using System.Web.UI.WebControls.WebParts;
  9. using System.Web.UI.HtmlControls;
  10. public partial class _Default : System.Web.UI.Page
  11. {
  12. // 扩展名定义
  13. string[] strArrFfmpeg = new string[] {"asf","avi","mpg","3gp","mov" };
  14. string[] strArrMencoder = new string[] {"wmv","rm","rmvb" };
  15. protected void Page_Load(object sender, EventArgs e)
  16. {
  17. }
  18. //
  19. protected void btnUpload_Click(object sender, EventArgs e)
  20. {
  21. string upFileName = "";
  22. if (this.FileUpload1.HasFile)
  23. {
  24. string fileName = PublicMethod.GetFileName(this.FileUpload1.FileName);// GetFileName();
  25. if ((string)Session["file"] == fileName)
  26. {
  27. return;
  28. }
  29. upFileName = Server.MapPath(PublicMethod.upFile + fileName);
  30. this.FileUpload1.SaveAs(upFileName);
  31. string saveName = DateTime.Now.ToString("yyyyMMddHHmmssffff") ;
  32. string playFile = Server.MapPath(PublicMethod.playFile + saveName);
  33. string imgFile = Server.MapPath(PublicMethod.imgFile + saveName);
  34. //System.IO.File.Copy(Server.MapPath(PublicMethod.playFile + "00000002.jpg"), Server.MapPath(PublicMethod.imgFile+"aa.jpg"));
  35. PublicMethod pm = new PublicMethod();
  36. string m_strExtension = PublicMethod.GetExtension(this.FileUpload1.PostedFile.FileName).ToLower();
  37. if (m_strExtension == "flv")
  38. {//直接拷贝到播放文件夹下
  39. System.IO.File.Copy(upFileName, playFile+".flv");
  40. pm.CatchImg(upFileName, imgFile);
  41. }
  42. string Extension = CheckExtension(m_strExtension);
  43. if (Extension == "ffmpeg")
  44. {
  45.  pm.ChangeFilePhy(upFileName, playFile, imgFile);
  46. }
  47. else if (Extension == "mencoder")
  48. {
  49. pm.MChangeFilePhy(upFileName, playFile, imgFile);
  50. }
  51. InsertData(this.txtTitle.Text, fileName,saveName);
  52. Session["file"] = fileName;
  53. }
  54. }
  55. //
  56. private string CheckExtension(string extension)
  57. {
  58. string m_strReturn = "";
  59. foreach (string var in this.strArrFfmpeg)
  60. {
  61. if (var == extension)
  62. {
  63. m_strReturn = "ffmpeg"; break;
  64. }
  65. }
  66. if (m_strReturn == "")
  67. {
  68. foreach (string var in strArrMencoder)
  69. {
  70. if (var == extension)
  71. {
  72. m_strReturn = "mencoder"; break;
  73. }
  74. }
  75. }
  76. return m_strReturn;
  77. }
  78. #region 插入数据到数据库中
  79. private void InsertData(string MediaName,string fileName,string saveName)
  80. {
  81. //string name=fileName.Substring(0, fileName.LastIndexOf('.'));
  82. string imgName = saveName + ".jpg";//图片文件名;
  83. string playName = saveName + ".flv";
  84. string sqlstr = "insert into Media(FMediaName,FMediaUpPath,FMediaPlayPath,FMediaImgPath) values(@MName,@MUppath,@MPlaypath,@MImgpath)";
  85. //string constr = ConfigurationManager.ConnectionStrings["sqlcon"].ToString();
  86. SqlDataSource1.InsertCommand = sqlstr;
  87. SqlDataSource1.InsertCommandType = SqlDataSourceCommandType.Text;// CommandType.Text;
  88. SqlDataSource1.InsertParameters.Add("MName",MediaName);
  89. SqlDataSource1.InsertParameters.Add("MUppath",PublicMethod.upFile+fileName);
  90. SqlDataSource1.InsertParameters.Add("MPlaypath",PublicMethod.playFile+playName);
  91. SqlDataSource1.InsertParameters.Add("MImgpath",PublicMethod.imgFile+imgName);
  92. SqlDataSource1.Insert();
  93. }
  94. #endregion
  95. }
  96. PublicMethod类如下:
  97. 在这个类里面主要是做文件转换和保存,在转换文件的时候CPU的利用率可以达100%.
  98. 它的主要原理是另起一个进程在转换的时候你会发现你的进程里多了一个.
  99. using System;
  100. using System.Configuration;
  101. /// <summary>
  102. /// Summary description for PublicMethod
  103. /// </summary>
  104. public class PublicMethod:System.Web.UI.Page
  105. {
  106. public PublicMethod()
  107. {
  108. }
  109. //文件路径
  110. public static string ffmpegtool = ConfigurationManager.AppSettings["ffmpeg"];
  111. public static string mencodertool = ConfigurationManager.AppSettings["mencoder"];
  112. public static string mplayertool = ConfigurationManager.AppSettings["mplayer"];
  113. public static string upFile = ConfigurationManager.AppSettings["upfile"] + "/";
  114. public static string imgFile = ConfigurationManager.AppSettings["imgfile"] + "/";
  115. public static string playFile = ConfigurationManager.AppSettings["playfile"] + "/";
  116. //文件图片大小
  117. public static string sizeOfImg = ConfigurationManager.AppSettings["CatchFlvImgSize"];
  118. //文件大小
  119. public static string widthOfFile = ConfigurationManager.AppSettings["widthSize"];
  120. public static string heightOfFile = ConfigurationManager.AppSettings["heightSize"];
  121. // // //获取文件的名字
  122. public static string GetFileName(string fileName)
  123. {
  124. int i = fileName.LastIndexOf("\\") + 1;
  125. string Name = fileName.Substring(i);
  126. return Name;
  127. }
复制链接 网友评论 收藏本文 关闭此页
上一条: asp.net如何将各种视频文件转换成…  下一条: Visual Studio 2012可扩展的组件、控件…
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  热点推荐
一个关于天气预报的WebService【C…
VS2010最大的新特点是并行编程的进…
TextBox控件:asp.net中如何为密码…
Web服务调用实例:实现天气预报的…
ASP.NET程序员面试试题(130道题)
ASP.NET教程:调用WebService的源码…
网站开发全程设计
据说这套.net面试题很多网络公司都…
考考你:C#常见题型及部分答案
原创:.net读取数据库sql2000
伪静态URL重写配置
配置web.config代码asp.net3.5个性…
使用线程池提高性能 Socket网络编…
ASP.NET(C#)GridView表头的增加…
如何找到正确的学习方向【.NET版】…
  最近更新
C#修改注册表demo
一个获取内容中的图片地址的方法
ASP.NET 4.0尚未在 Web 服务器上注…
四大作用域:application,session…
ConfigurationManager不存在的解决…
vs2012_vs2013_vs2015没有Web Dep…
vs2015禁用解决方案中单击打开文件…
微软为Visual Studio 2015新增安卓…
C#如何实现搜索引擎网络爬虫程序
C#中正则表达式的用法
用C#抓取需要登录的页面数据
VS2015新功能
VS2015安装图解教程
vs2015新功能介绍
vs2015安装图解

关于我们 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3