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}}
评论