首先我们部署一下文件夹在工程的目录下新建几个文件夹如下图 UpFiles文件夹是要保存你上传的文件PlayFiles文件夹是用于你转换后保存的文件(用于网上播放) ImgFile文件夹是保存截取视频文件的图片然后那两个mencoder和ffmpeg文件夹是视频转换工具此视频转换也 可叫做mencoder+ffmpeg视频转换 首先在配置文件中给这些文件夹进行路径的配置如下 CODE: <appSettings> <!工具文件夹> <add key=ffmpeg value=ffmpeg/ffmpegexe/> <add key=mencoder value=mencoder/mencoderexe/> <add key=mplayer value=mencoder/mplayerexe/> <!上传文件的路径> <add key=upfile value=UpFiles/> <!上专文件图片路径> <add key=imgfile value=ImgFile/> <!上传文件图片大小> <add key=CatchFlvImgSize value=x/> <add key=widthSize value=/> <add key=heightSize value=/> <!转换后文件路径> <add key=playfile value=PlayFiles/> </appSettings> 在上传ASPX页面中 CODE: 标题<asp:TextBox ID=txtTitle runat=server Width=px></asp:TextBox> <asp:RequiredFieldValidator ID=RequiredFieldValidator runat=server ControlToValidate=txtTitle ErrorMessage=标题不为空></asp:RequiredFieldValidator> <br /> <asp:FileUpload ID=FileUpload runat=server Width=px /> <asp:Button ID=btnUpload runat=server OnClick=btnUpload_Click Text=上传视频 Width=px /> 文件类型<span >(asf|flv|avi|mpg|gp|mov|wmv|rm|rmvb)</span> <asp:RegularExpressionValidator ID=imagePathValidator runat=server ErrorMessage=文件类型不正确 ValidationGroup=vgValidation Display=Dynamic ValidationExpression=^[azAZ]:(\\+)(asf|flv|avi|mpg|gp|mov|wmv|rm|rmvb)$ ControlToValidate=FileUpload> </asp:RegularExpressionValidator> <asp:RequiredFieldValidator ID=RequiredFieldValidator runat=server ControlToValidate=FileUpload ErrorMessage=文件不为空></asp:RequiredFieldValidator></div> <div ></div> <div>上传列表</div> 程序工作的原理是视频先上传上去然后跟着就是开始转换 所以在CS 文件中有 这里为了方便我是用sqlDatasource数据控件做数据的操作 CODE: using System; using SystemData; using SystemConfiguration; using SystemWeb; using SystemWebSecurity; using SystemWebUI; using SystemWebUIWebControls; using SystemWebUIWebControlsWebParts; using SystemWebUIHtmlControls; public partial class _Default : SystemWebUIPage { // 扩展名定义 string[] strArrFfmpeg = new string[] {asfavimpggpmov }; string[] strArrMencoder = new string[] {wmvrmrmvb }; protected void Page_Load(object sender EventArgs e) { } // protected void btnUpload_Click(object sender EventArgs e) { string upFileName = ; if (thisFileUploadHasFile) { string fileName = PublicMethodGetFileName(thisFileUploadFileName);// GetFileName(); if ((string)Session[file] == fileName) { return; } upFileName = ServerMapPath(PublicMethodupFile + fileName); thisFileUploadSaveAs(upFileName); string saveName = DateTimeNowToString(yyyyMMddHHmmssffff) ; string playFile = ServerMapPath(PublicMethodplayFile + saveName); string imgFile = ServerMapPath(PublicMethodimgFile + saveName); //SystemIOFileCopy(ServerMapPath(PublicMethodplayFile + jpg) ServerMapPath(PublicMethodimgFile+aajpg)); PublicMethod pm = new PublicMethod(); string m_strExtension = PublicMethodGetExtension(thisFileUploadPostedFileFileName)ToLower(); if (m_strExtension == flv) {//直接拷贝到播放文件夹下 SystemIOFileCopy(upFileName playFile+flv); pmCatchImg(upFileName imgFile); } string Extension = CheckExtension(m_strExtension); if (Extension == ffmpeg) { pmChangeFilePhy(upFileName playFile imgFile); } else if (Extension == mencoder) { pmMChangeFilePhy(upFileName playFile imgFile); } InsertData(thistxtTitleText fileNamesaveName); Session[file] = fileName; } } // private string CheckExtension(string extension) { string m_strReturn = ; foreach (string var in thisstrArrFfmpeg) { 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; } #region 插入数 据到数据库中 private void InsertData(string MediaNamestring fileNamestring saveName) { //string name=fileNameSubstring( fileNameLastIndexOf()); string imgName = saveName + jpg;//图片文件名; string playName = saveName + flv; string sqlstr = insert into Media(FMediaNameFMediaUpPathFMediaPlayPathFMediaImgPath) values(@MName@MUppath@MPlaypath@MImgpath); //string constr = ConfigurationManagerConnectionStrings[sqlcon]ToString(); SqlDataSourceInsertCommand = sqlstr; SqlDataSourceInsertCommandType = SqlDataSourceCommandTypeText;// CommandTypeText; SqlDataSourceInsertParametersAdd(MNameMediaName); SqlDataSourceInsertParametersAdd(MUppathPublicMethodupFile+fileName); SqlDataSourceInsertParametersAdd(MPlaypathPublicMethodplayFile+playName); SqlDataSourceInsertParametersAdd(MImgpathPublicMethodimgFile+imgName); SqlDataSourceInsert(); } #endregion } PublicMethod类如下 在这个类里面主要是做文件转换和保存在转换文件的时候CPU的利用率可以达% 它的主要原理是另起一个进程在转换的时候你会发现你的进程里多了一个 using System; using SystemConfiguration; /// <summary> /// Summary description for PublicMethod /// </summary> public class PublicMethod:SystemWebUIPage { public PublicMethod() { } //文件路径 public static string ffmpegtool = ConfigurationManagerAppSettings[ffmpeg]; public static string mencodertool = ConfigurationManagerAppSettings[mencoder]; public static string mplayertool = ConfigurationManagerAppSettings[mplayer]; public static string upFile = ConfigurationManagerAppSettings[upfile] + /; public static string imgFile = ConfigurationManagerAppSettings[imgfile] + /; public static string playFile = ConfigurationManagerAppSettings[playfile] + /; //文件图片大小 public static string sizeOfImg = ConfigurationManagerAppSettings[CatchFlvImgSize]; //文件大小 public static string widthOfFile = ConfigurationManagerAppSettings[widthSize]; public static strin |