private static void docToFlexPaperSwf(ToSwfData data) { string extName = "*" + data.FilePath.GetExtension().ToLower() + ";"; if (extName != "*.pdf;") { OfficeToPDF(data); data.FilePath = System.IO.Path.ChangeExtension(data.FilePath, ".pdf"); if (UseWatermark) { PDFAddWatermark(data); } } if (UsePaperSplit) { PDFToSwfN(data); } else { PDFToSwf(data); } if (extName != "*.pdf;") { FileDirectory.FileDelete(data.FilePath); } if ((!data.DB.IsNullEmpty()) && (!data.UpdateSQL.IsNullEmpty())) { Data.Pool(data.DB).ExecSql(data.UpdateSQL); } }
private static void ffmpegToFlv(ToSwfData data) { WriteLog("开始转换", "FfmpegToFlv"); if (!FileDirectory.FileExists(ffmpegApiPath)) { WriteLog("接口不存在:", ffmpegApiPath); return; } string flvName = System.IO.Path.ChangeExtension(data.FilePath, ".flv"); string arguments = " -i \"" + data.FilePath + "\" -y -ab 56 -ar 22050 -b 500k -r 15 \"" + flvName + "\""; Run(ffmpegApiPath, arguments); Url = "ok - [" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] - " + ffmpegApiPath + arguments; if (OnNewOrDelete != null) { OnNewOrDelete(null, null); } if (!FileDirectory.FileExists(flvName)) { WriteLog(flvName + " 文件不存在", "FfmpegToFlv"); return; } WriteLog(Url, "FfmpegToFlv"); if ((!data.DB.IsNullEmpty()) && (!data.UpdateSQL.IsNullEmpty())) { Data.Pool(data.DB).ExecSql(data.UpdateSQL); } }
private static void mencoderToFlv(ToSwfData data) { WriteLog("开始转换", "MencoderToFlv"); if (!FileDirectory.FileExists(mencoderApiPath)) { WriteLog("接口不存在:", mencoderApiPath); return; } string flvName = System.IO.Path.ChangeExtension(data.FilePath, ".flv"); //string arguments = " \"" + data.FilePath + "\" -o \"" + flvName + "\" -quiet -oac mp3lame -lameopts abr:br=56 -srate 22050 -af channels=2 -ovc lavc -vf harddup,hqdn3d,scale=-3:-3 -lavcopts vcodec=flv:vbitrate=152:mbd=2:trell:v4mv:turbo:keyint=45 -ofps 15 -of lavf "; string arguments = " \"" + data.FilePath + "\" -o \"" + flvName + "\" -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=220:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -sws 3 -vf scale=320:240,expand=320:240:::1,crop=320:240:0:0 -ofps 30 -srate 22050 "; Run(mencoderApiPath, arguments); Url = "ok - [" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] - " + mencoderApiPath + arguments; if (OnNewOrDelete != null) { OnNewOrDelete(null, null); } if (!FileDirectory.FileExists(flvName)) { WriteLog(flvName + " 文件不存在", "MencoderToFlv"); return; } WriteLog(Url, "MencoderToFlv"); if ((!data.DB.IsNullEmpty()) && (!data.UpdateSQL.IsNullEmpty())) { Data.Pool(data.DB).ExecSql(data.UpdateSQL); } }
/// <summary> /// 定时转换 /// </summary> public static void DoRun() { if (Index > int.MaxValue) { Index = 0; } Url = "计数 - " + (++Index).ToString() + " - " + IsRun.ToString(); if (OnNewOrDelete != null) { OnNewOrDelete(null, null); } lock (toLock) { if (IsRun || List.Count == 0) { return; } IsRun = true; ToSwfData data = List[0]; //Url = "开始转换 - " + fileName; //if (OnNewOrDelete != null) { OnNewOrDelete(null, null); } List.RemoveAt(0); ToSwfFlv(data); IsRun = false; } }
private static void docToFlashPaperSwf(ToSwfData data) { WriteLog("开始转换", "DocToFlashPaperSwf"); if (!FileDirectory.FileExists(flashPrinterApiPath)) { WriteLog("接口不存在:", flashPrinterApiPath); return; } string swfName = System.IO.Path.ChangeExtension(data.FilePath, ".swf"); string arguments = " \"{0}\" -o \"{1}\"".FormatWith(data.FilePath, swfName); Run(flashPrinterApiPath, arguments); Url = "ok - [" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] - " + flashPrinterApiPath + arguments; if (OnNewOrDelete != null) { OnNewOrDelete(null, null); } if (!FileDirectory.FileExists(swfName)) { WriteLog(swfName + " 文件不存在", "DocToFlashPaperSwf"); return; } WriteLog(Url, "DocToFlashPaperSwf"); if ((!data.DB.IsNullEmpty()) && (!data.UpdateSQL.IsNullEmpty())) { Data.Pool(data.DB).ExecSql(data.UpdateSQL); } }
/// <summary> /// 添加到队列 /// </summary> /// <param name="data"></param> public static void AddToList(ToSwfData data) { lock (toLock) { List.Add(data); } ToSwfBase.WriteLog(data, "AddToList"); }
/// <summary> /// 添加到转换列表 /// </summary> /// <param name="ToSwfData">实体</param> public static void AddToList(ToSwfData data) { using (ChannelFactory<IToSwf> channel = new ChannelFactory<IToSwf>("Pub.Class.ToSwfWCF.ToSwfService")) { IToSwf toSwf = channel.CreateChannel(); using (toSwf as IDisposable) { toSwf.AddToList(data); } } }
/// <summary> /// 写日志 /// </summary> /// <param name="data">数据</param> /// <param name="api">接口</param> public static void WriteLog(ToSwfData data, string api = "") { if (!UseLog) { return; } WriteLog(data.ToJson(), api); }
/// <summary> /// 转换通知用接口,可转换office文档和各种视频 /// </summary> /// <param name="filePath">全路径</param> public static void ToSwfFlv(ToSwfData data) { string api = string.Empty; string extName = "*" + data.FilePath.GetExtension().ToLower() + ";"; if (ffmpegExt.IndexOf(extName) >= 0) { api = "ffmpeg"; } if (mencoderExt.IndexOf(extName) >= 0) { api = "mencoder"; } if (UseiSpring.Length > 0 && ispringExt.IndexOf(extName) >= 0) { api = "ispring"; } else { if (officeExt.IndexOf(extName) >= 0) { api = "flashpaper_doc"; } if (officeExt.IndexOf(extName) >= 0 && UsePaper == "flexpaper") { api = "flexpaper_doc"; } } if (data.IP.IsIP() || data.IP.IsIPSect()) { data.FilePath = "\\\\" + data.IP + "\\" + data.DataPath + "\\" + data.FilePath; } else { data.FilePath = data.IP + "\\" + (data.DataPath.IsNullEmpty() ? "" : data.DataPath + "\\") + data.FilePath; } WriteLog(data.FilePath + "==================================================================================================================================", "==========启动转换文件"); WriteLog(data, "ToSwfFlv " + api); if (!FileDirectory.FileExists(data.FilePath)) { WriteLog("文件不存在:", data.FilePath); return; } switch (api) { case "ffmpeg": FfmpegToFlv(data); break; case "mencoder": MencoderToFlv(data); break; case "flashpaper_doc": DocToFlashPaperSwf(data); break; case "flexpaper_doc": DocToFlexPaperSwf(data); break; case "ispring": iSpringPPTToSwf(data); break; } WriteLog(data.FilePath + "==================================================================================================================================", "==========结束转换文件"); }
/// <summary> /// 添加到转换列表 /// </summary> /// <param name="ToSwfData">实体</param> public static void AddToList(ToSwfData data) { using (ChannelFactory <IToSwf> channel = new ChannelFactory <IToSwf>("Pub.Class.ToSwfWCF.ToSwfService")) { IToSwf toSwf = channel.CreateChannel(); using (toSwf as IDisposable) { toSwf.AddToList(data); } } }
/// <summary> /// 文档转FlexPaper可用SWF /// </summary> /// <param name="filePath"></param> public static void DocToFlexPaperSwf(ToSwfData data) { if (string.IsNullOrEmpty(data.Password)) { docToFlexPaperSwf(data); return; } using (new ShareConnect(data.IP, data.UserName, data.Password, LogonType.NewCredentials, LogonProvider.WinNT50)) { WriteLog("与共享目录建立连接", "DocToFlexPaperSwf"); docToFlexPaperSwf(data); } }
/// <summary> /// Ffmpeg转Flv /// </summary> /// <param name="fileName"></param> public static void FfmpegToFlv(ToSwfData data) { if (string.IsNullOrEmpty(data.Password)) { ffmpegToFlv(data); return; } using (new ShareConnect(data.IP, data.UserName, data.Password, LogonType.NewCredentials, LogonProvider.WinNT50)) { WriteLog("与共享目录建立连接", "FfmpegToFlv"); ffmpegToFlv(data); } }
/// <summary> /// Mencoder转Flv /// </summary> /// <param name="fileName"></param> public static void MencoderToFlv(ToSwfData data) { if (string.IsNullOrEmpty(data.Password)) { mencoderToFlv(data); return; } //fileName = SharePath + fileName.Substring(5); using (new ShareConnect(data.IP, data.UserName, data.Password, LogonType.NewCredentials, LogonProvider.WinNT50)) { WriteLog("与共享目录建立连接", "MencoderToFlv"); mencoderToFlv(data); } }
/// <summary> /// PDF转SWF 单个SWF /// </summary> /// <param name="filePath"></param> public static void PDFToSwf(ToSwfData data) { WriteLog("开始转换", "PDFToSwf"); if (!FileDirectory.FileExists(pdfToSwfApiPath)) { WriteLog("接口不存在:", pdfToSwfApiPath); return; } string swfName = System.IO.Path.ChangeExtension(data.FilePath, ".swf"); string arguments = " -t \"{0}\" -o \"{1}\" -s flashversion=9 -s poly2bitmap".FormatWith(data.FilePath, swfName); Run(pdfToSwfApiPath, arguments); Url = "ok - [" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] - " + pdfToSwfApiPath + arguments; if (OnNewOrDelete != null) { OnNewOrDelete(null, null); } if (!FileDirectory.FileExists(swfName)) { WriteLog(swfName + " 文件不存在", "PDFToSwf"); return; } WriteLog(Url, "PDFToSwf"); }
/// <summary> /// iSpring转SWF /// </summary> /// <param name="data"></param> public static void iSpringPPTToSwf(ToSwfData data) { WriteLog("开始转换", "iSpringPPTToSwf"); if (!FileDirectory.FileExists(iSpringApiPath)) { WriteLog("接口不存在:", iSpringApiPath); return; } string swfName = System.IO.Path.ChangeExtension(data.FilePath, ".swf"); string arguments = " \"{0}\" \"{1}\"".FormatWith(data.FilePath, swfName); Run(iSpringApiPath, arguments); Url = "ok - [" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] - " + iSpringApiPath + arguments; if (OnNewOrDelete != null) { OnNewOrDelete(null, null); } if (!FileDirectory.FileExists(swfName)) { WriteLog(swfName + " 文件不存在", "iSpringPPTToSwf"); return; } WriteLog(Url, "iSpringPPTToSwf"); }
/// <summary> /// pdf添加水印 /// </summary> /// <param name="data"></param> private static void PDFAddWatermark(ToSwfData data) { WriteLog("开始添加水印", "PDFAddWatermark"); if (!FileDirectory.FileExists(pdfbgApiPath)) { WriteLog("接口不存在:", pdfbgApiPath); return; } string pdfName = data.FilePath + ".pdf"; string arguments = " \"{0}\" \"{1}\" \"{2}\" {3}".FormatWith(data.FilePath, WatermarkImage, pdfName, WatermarkPosition); Run(pdfbgApiPath, arguments); Url = "ok - [" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] - " + pdfbgApiPath + arguments; if (OnNewOrDelete != null) { OnNewOrDelete(null, null); } if (!FileDirectory.FileExists(pdfName)) { WriteLog(pdfName + " 文件不存在", "PDFAddWatermark"); return; } FileDirectory.FileDelete(data.FilePath); FileDirectory.FileRename(pdfName, data.FilePath); WriteLog(Url, "PDFAddWatermark"); }
/// <summary> /// PDF转SWF 多个SWF /// </summary> /// <param name="filePath"></param> public static void PDFToSwfN(ToSwfData data) { if (!FileDirectory.FileExists(pdfToSwfApiPath)) { WriteLog("接口不存在:", pdfToSwfApiPath); return; } string swfName = System.IO.Path.ChangeExtension(data.FilePath, ".swf"); swfName = swfName.Substring(0, swfName.Length - 4) + "%.swf"; //swfName = System.IO.Path.GetDirectoryName(swfName) + "\\" + System.IO.Path.GetFileNameWithoutExtension(swfName) + "%.swf"; string arguments = " \"{0}\" -o \"{1}\" -f -T 9 -t -s storeallcharacters -s poly2bitmap".FormatWith(data.FilePath, swfName); Run(pdfToSwfApiPath, arguments); Url = "ok - [" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] - " + pdfToSwfApiPath + arguments; if (OnNewOrDelete != null) { OnNewOrDelete(null, null); } if (!FileDirectory.FileExists(swfName.Replace("%.swf", "1.swf"))) { WriteLog(swfName + " 文件不存在", "PDFToSwfN"); return; } WriteLog(Url, "PDFToSwfN"); }
private static void docToFlexPaperSwf(ToSwfData data) { string extName = "*" + data.FilePath.GetExtension().ToLower() + ";"; if (extName != "*.pdf;") { OfficeToPDF(data); data.FilePath = System.IO.Path.ChangeExtension(data.FilePath, ".pdf"); if (UseWatermark) PDFAddWatermark(data); } if (UsePaperSplit) PDFToSwfN(data); else PDFToSwf(data); if (extName != "*.pdf;") FileDirectory.FileDelete(data.FilePath); if ((!data.DB.IsNullEmpty()) && (!data.UpdateSQL.IsNullEmpty())) Data.Pool(data.DB).ExecSql(data.UpdateSQL); }
/// <summary> /// 写日志 /// </summary> /// <param name="data">数据</param> /// <param name="api">接口</param> public static void WriteLog(ToSwfData data, string api = "") { if (!UseLog) return; WriteLog(data.ToJson(), api); }
private static void docToFlashPaperSwf(ToSwfData data) { WriteLog("开始转换", "DocToFlashPaperSwf"); if (!FileDirectory.FileExists(flashPrinterApiPath)) { WriteLog("接口不存在:", flashPrinterApiPath); return; } string swfName = System.IO.Path.ChangeExtension(data.FilePath, ".swf"); string arguments = " \"{0}\" -o \"{1}\"".FormatWith(data.FilePath, swfName); Run(flashPrinterApiPath, arguments); Url = "ok - [" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] - " + flashPrinterApiPath + arguments; if (OnNewOrDelete != null) { OnNewOrDelete(null, null); } if (!FileDirectory.FileExists(swfName)) { WriteLog(swfName + " 文件不存在", "DocToFlashPaperSwf"); return; } WriteLog(Url, "DocToFlashPaperSwf"); if ((!data.DB.IsNullEmpty()) && (!data.UpdateSQL.IsNullEmpty())) Data.Pool(data.DB).ExecSql(data.UpdateSQL); }
private static void ffmpegToFlv(ToSwfData data) { WriteLog("开始转换", "FfmpegToFlv"); if (!FileDirectory.FileExists(ffmpegApiPath)) { WriteLog("接口不存在:", ffmpegApiPath); return; } string flvName = System.IO.Path.ChangeExtension(data.FilePath, ".flv"); string arguments = " -i \"" + data.FilePath + "\" -y -ab 56 -ar 22050 -b 500k -r 15 \"" + flvName + "\""; Run(ffmpegApiPath, arguments); Url = "ok - [" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] - " + ffmpegApiPath + arguments; if (OnNewOrDelete != null) { OnNewOrDelete(null, null); } if (!FileDirectory.FileExists(flvName)) { WriteLog(flvName + " 文件不存在", "FfmpegToFlv"); return; } WriteLog(Url, "FfmpegToFlv"); if ((!data.DB.IsNullEmpty()) && (!data.UpdateSQL.IsNullEmpty())) Data.Pool(data.DB).ExecSql(data.UpdateSQL); }
/// <summary> /// 转换通知用接口,可转换office文档和各种视频 /// </summary> /// <param name="filePath">全路径</param> public static void ToSwfFlv(ToSwfData data) { string api = string.Empty; string extName = "*" + data.FilePath.GetExtension().ToLower() + ";"; if (ffmpegExt.IndexOf(extName) >= 0) api = "ffmpeg"; if (mencoderExt.IndexOf(extName) >= 0) api = "mencoder"; if (UseiSpring.Length > 0 && ispringExt.IndexOf(extName) >= 0) api = "ispring"; else { if (officeExt.IndexOf(extName) >= 0) api = "flashpaper_doc"; if (officeExt.IndexOf(extName) >= 0 && UsePaper == "flexpaper") api = "flexpaper_doc"; } if (data.IP.IsIP() || data.IP.IsIPSect()) { data.FilePath = "\\\\" + data.IP + "\\" + data.DataPath + "\\" + data.FilePath; } else { data.FilePath = data.IP + "\\" + (data.DataPath.IsNullEmpty() ? "" : data.DataPath + "\\") + data.FilePath; } WriteLog(data.FilePath + "==================================================================================================================================", "==========启动转换文件"); WriteLog(data, "ToSwfFlv " + api); if (!FileDirectory.FileExists(data.FilePath)) { WriteLog("文件不存在:", data.FilePath); return; } switch (api) { case "ffmpeg": FfmpegToFlv(data); break; case "mencoder": MencoderToFlv(data); break; case "flashpaper_doc": DocToFlashPaperSwf(data); break; case "flexpaper_doc": DocToFlexPaperSwf(data); break; case "ispring": iSpringPPTToSwf(data); break; } WriteLog(data.FilePath + "==================================================================================================================================", "==========结束转换文件"); }
private static void mencoderToFlv(ToSwfData data) { WriteLog("开始转换", "MencoderToFlv"); if (!FileDirectory.FileExists(mencoderApiPath)) { WriteLog("接口不存在:", mencoderApiPath); return; } string flvName = System.IO.Path.ChangeExtension(data.FilePath, ".flv"); //string arguments = " \"" + data.FilePath + "\" -o \"" + flvName + "\" -quiet -oac mp3lame -lameopts abr:br=56 -srate 22050 -af channels=2 -ovc lavc -vf harddup,hqdn3d,scale=-3:-3 -lavcopts vcodec=flv:vbitrate=152:mbd=2:trell:v4mv:turbo:keyint=45 -ofps 15 -of lavf "; string arguments = " \"" + data.FilePath + "\" -o \"" + flvName + "\" -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=220:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -sws 3 -vf scale=320:240,expand=320:240:::1,crop=320:240:0:0 -ofps 30 -srate 22050 "; Run(mencoderApiPath, arguments); Url = "ok - [" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] - " + mencoderApiPath + arguments; if (OnNewOrDelete != null) { OnNewOrDelete(null, null); } if (!FileDirectory.FileExists(flvName)) { WriteLog(flvName + " 文件不存在", "MencoderToFlv"); return; } WriteLog(Url, "MencoderToFlv"); if ((!data.DB.IsNullEmpty()) && (!data.UpdateSQL.IsNullEmpty())) Data.Pool(data.DB).ExecSql(data.UpdateSQL); }
/// <summary> /// 添加到转换列表 /// </summary> /// <param name="filePath">相对文件名</param> public void AddToList(ToSwfData data) { ToSwfBase.AddToList(data); }