实例介绍
【实例简介】用于视频转码,mencoder文件夹直接去网上下载即可
【核心代码】
using System; using System.Configuration; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Serialization.Formatters; using System.Security.Principal; using System.Reflection; using System.Threading; using System.Configuration.Install; using System.Net; using System.Collections.Generic; using Com.iFlytek.CallVideoCMS.VideoConvertLibrary; namespace VideoConvertService { /// <summary> /// 服务端 /// </summary> class VideoConverter { /// <summary> /// 应用程序的主入口点 /// </summary> static void Main( string[] args ) { PrintLogo(); try { if ( WindowsIdentity.GetCurrent().IsSystem ) { System.ServiceProcess.ServiceBase[] ServicesToRun = new System.ServiceProcess.ServiceBase[] { new VideoConvertWindowsService() }; System.ServiceProcess.ServiceBase.Run( ServicesToRun ); return; } if ( args.Length <= 0 ) { VideoConverter server = new VideoConverter(); server.StartService(); Console.WriteLine("输入 \"quit\" 来停止服务.\r\n"); string input; while ( true ) { input = Console.ReadLine(); if ( input.ToUpper().Equals( "QUIT" ) ) { server.StopService(); break; } else { Console.WriteLine("输入 \"quit\" 来停止服务.\r\n"); } } } else { switch ( args[0].ToLower() ) { case "/i": case "/install": case "-i": case "-install": ManagedInstallerClass.InstallHelper( new string[] { Assembly.GetEntryAssembly().Location } ); break; case "-u": case "-uninstall": case "/u": case "/uninstall": ManagedInstallerClass.InstallHelper( new string[] { "/u", Assembly.GetEntryAssembly().Location } ); break; default: Console.WriteLine("无法识别的命令!\r\n /i(nstall) --- 安装服务\r\n /u(ninstall) --- 卸载服务"); break; } } } catch ( Exception e ) { Logger.AppendStringToTextFile(e.Message); } } #region 服务相关 /// <summary> /// 启动服务 /// </summary> public void StartService() { try { if (actionMonitorThread == null) { actionMonitorThread = new Thread(ConverterMonitor); } actionMonitorThread.Start(); InfoOutput("转换程序开始工作..."); } catch (Exception ex) { InfoOutput(ex.Message); } } /// <summary> /// 停止服务 /// </summary> public void StopService() { try { if (actionMonitorThread != null) { actionMonitorThread.Abort(); } actionMonitorThread = null; InfoOutput("转换程序停止工作!"); } catch (Exception ex) { InfoOutput(ex.Message); } } /// <summary> /// 打印版权信息 /// </summary> private static void PrintLogo() { InfoOutput("3GVideoCall VideoConvert Service 1.0"); InfoOutput("Copyright (C) Anhui USTC iFlytek co,. Ltd. 2010. All rights reserved.\r\n"); } /// <summary> /// 信息输出 /// </summary> /// <param name="msg"></param> private static void InfoOutput(string msg) { Console.WriteLine(msg); Logger.AppendStringToTextFile(msg); } #endregion #region Convert Thread private Thread actionMonitorThread = null; private void ConverterMonitor() { try { InfoOutput("加载配置..."); string VideoPath = (string)ConfigurationManager.AppSettings["VideoPath"]; string FlashPagesPath = (string)ConfigurationManager.AppSettings["FlashPagesPath"]; string FlashPagesUrl = (string)ConfigurationManager.AppSettings["FlashPagesUrl"]; string ffmpeg = (string)ConfigurationManager.AppSettings["ffmpeg"]; string mencoder = (string)ConfigurationManager.AppSettings["mencoder"]; string mplayer = (string)ConfigurationManager.AppSettings["mplayer"]; string CatchFlvImgSize = (string)ConfigurationManager.AppSettings["CatchFlvImgSize"]; string widthSize = (string)ConfigurationManager.AppSettings["widthSize"]; string heightSize = (string)ConfigurationManager.AppSettings["heightSize"]; int MonitorTime = int.Parse(ConfigurationManager.AppSettings["MonitorTime"]); InfoOutput("[VideoPath] : " VideoPath); InfoOutput("[FlashPagesPath] : " FlashPagesPath); InfoOutput("[FlashPagesUrl] : " FlashPagesUrl); InfoOutput("[ffmpeg] : " ffmpeg); InfoOutput("[mencoder] : " mencoder); InfoOutput("[mplayer] : " mplayer); InfoOutput("[CatchFlvImgSize] : " CatchFlvImgSize); InfoOutput("[widthSize] : " widthSize); InfoOutput("[heightSize] : " heightSize); InfoOutput("[MonitorTime] : " MonitorTime); InfoOutput("加载配置完成!\r\n"); while (true) { try { List<ConvertMsgBody> mbList = QueueManage.GetMessage(); foreach (ConvertMsgBody mb in mbList) { InfoOutput("[" DateTime.Now.ToString("yyyy'-'MM'-'dd'' HH:mm:ss") "]转换文件:" mb.VideoFileName); if (string.IsNullOrEmpty(mb.MerchantID))//系统素材 { FlashConverter.ConvertSystemFile(mb.VideoFileName); } else//商家 { FlashConverter.ConvertMerchantFile(mb.MerchantID, mb.VideoFileName, mb.VideoFileType); } } } catch (Exception ex) { InfoOutput(ex.Message); Logger.DumpException(ex); } Thread.Sleep(MonitorTime * 1000); } } catch (ThreadAbortException) { Thread.ResetAbort(); } catch (Exception ex) { InfoOutput(ex.Message); } } #endregion } }
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论