private void SetAudioCheckSettingsInfo(AudioCheckSettingsInfo pAudioCheckSettingsInfo) { try { string xmlfile = Application.StartupPath + @"\AudioCheckParameter.xml"; if (File.Exists(xmlfile)) { XmlDocument xmlDoc; xmlDoc = new XmlDocument(); xmlDoc.Load(xmlfile); //加载xml文件 xmlDoc.SelectSingleNode("AudioCheckParameter"). xmlDoc.SelectSingleNode("//AudioCheckParameter//IsCheckMutedbfs").Attributes["value"].Value = pAudioCheckSettingsInfo.IsCheckMutedbfs == false ? "0" : "1"; xmlDoc.SelectSingleNode("//AudioCheckParameter//Mutedbfs").Attributes["value"].Value = pAudioCheckSettingsInfo.Mutedbfs.ToString(); xmlDoc.SelectSingleNode("//AudioCheckParameter//MuteDuration").Attributes["value"].Value = pAudioCheckSettingsInfo.MuteDuration.ToString(); xmlDoc.SelectSingleNode("//AudioCheckParameter//IsCheckReverse").Attributes["value"].Value = pAudioCheckSettingsInfo.IsCheckReverse == false ? "0" : "1"; xmlDoc.SelectSingleNode("//AudioCheckParameter//Reverse").Attributes["value"].Value = pAudioCheckSettingsInfo.Reverse.ToString(); xmlDoc.SelectSingleNode("//AudioCheckParameter//ReversDuration").Attributes["value"].Value = pAudioCheckSettingsInfo.ReversDuration.ToString(); xmlDoc.SelectSingleNode("//AudioCheckParameter//IsCheckOverloaddbfs").Attributes["value"].Value = pAudioCheckSettingsInfo.IsCheckOverloaddbfs == false ? "0" : "1"; xmlDoc.SelectSingleNode("//AudioCheckParameter//Overloaddbfs").Attributes["value"].Value = pAudioCheckSettingsInfo.Overloaddbfs.ToString(); xmlDoc.SelectSingleNode("//AudioCheckParameter//IsCheckSLevelThreshold_Limit").Attributes["value"].Value = pAudioCheckSettingsInfo.IsCheckSLevelThreshold_Limit == false ? "0" : "1"; xmlDoc.SelectSingleNode("//AudioCheckParameter//SLevelThreshold_Limit").Attributes["value"].Value = pAudioCheckSettingsInfo.SLevelThreshold_Limit.ToString(); xmlDoc.SelectSingleNode("//AudioCheckParameter//NLRLevelTime_Limit").Attributes["value"].Value = pAudioCheckSettingsInfo.NLRLevelTime_Limit.ToString(); //this.myAudioCheckSettingsInfo.NLRLevelTime_Limit xmlDoc.Save(xmlfile); } } catch (Exception ex) { } }
private AudioCheckSettingsInfo GetAudioCheckSettingsInfo() { AudioCheckSettingsInfo _AudioCheckSettingsInfo = null; try { string xmlfile = Application.StartupPath + @"\AudioCheckParameter.xml"; if (File.Exists(xmlfile)) { _AudioCheckSettingsInfo = new AudioCheckSettingsInfo(); XmlDocument xmlDoc; xmlDoc = new XmlDocument(); xmlDoc.Load(xmlfile); //加载xml文件 xmlDoc.SelectSingleNode("AudioCheckParameter"). _AudioCheckSettingsInfo.IsCheckMutedbfs = xmlDoc.SelectSingleNode("AudioCheckParameter").SelectSingleNode("IsCheckMutedbfs").Attributes["value"].Value.ToString().Trim() == "0" ? false : true; _AudioCheckSettingsInfo.Mutedbfs = Convert.ToInt32(xmlDoc.SelectSingleNode("AudioCheckParameter").SelectSingleNode("Mutedbfs").Attributes["value"].Value.ToString().Trim()); _AudioCheckSettingsInfo.MuteDuration = Convert.ToInt32(xmlDoc.SelectSingleNode("AudioCheckParameter").SelectSingleNode("MuteDuration").Attributes["value"].Value.ToString().Trim()); _AudioCheckSettingsInfo.IsCheckReverse = xmlDoc.SelectSingleNode("AudioCheckParameter").SelectSingleNode("IsCheckReverse").Attributes["value"].Value.ToString().Trim() == "0" ? false : true; _AudioCheckSettingsInfo.Reverse = Convert.ToDouble(xmlDoc.SelectSingleNode("AudioCheckParameter").SelectSingleNode("Reverse").Attributes["value"].Value.ToString().Trim()); _AudioCheckSettingsInfo.ReversDuration = Convert.ToInt32(xmlDoc.SelectSingleNode("AudioCheckParameter").SelectSingleNode("ReversDuration").Attributes["value"].Value.ToString().Trim()); _AudioCheckSettingsInfo.IsCheckOverloaddbfs = xmlDoc.SelectSingleNode("AudioCheckParameter").SelectSingleNode("IsCheckOverloaddbfs").Attributes["value"].Value.ToString().Trim() == "0" ? false : true; _AudioCheckSettingsInfo.Overloaddbfs = Convert.ToInt32(xmlDoc.SelectSingleNode("AudioCheckParameter").SelectSingleNode("Overloaddbfs").Attributes["value"].Value.ToString().Trim()); _AudioCheckSettingsInfo.IsCheckSLevelThreshold_Limit = xmlDoc.SelectSingleNode("AudioCheckParameter").SelectSingleNode("IsCheckSLevelThreshold_Limit").Attributes["value"].Value.ToString().Trim() == "0" ? false : true; _AudioCheckSettingsInfo.SLevelThreshold_Limit = Convert.ToInt16(xmlDoc.SelectSingleNode("AudioCheckParameter").SelectSingleNode("SLevelThreshold_Limit").Attributes["value"].Value.ToString().Trim()); _AudioCheckSettingsInfo.NLRLevelTime_Limit = Convert.ToInt16(xmlDoc.SelectSingleNode("AudioCheckParameter").SelectSingleNode("NLRLevelTime_Limit").Attributes["value"].Value.ToString().Trim()); } } catch (Exception ex) { _AudioCheckSettingsInfo = null; } return(_AudioCheckSettingsInfo); }
public static void StartAudioCheck(AudioCheckSettingsInfo info, string audioFile) { h = AudioTechReview_CreateInstance(IntPtr.Zero); AudioTechReview_SetFileName(h, (new UnicodeEncoding()).GetBytes(audioFile)); AudioTechReview_SetReportInfo(h, (new UnicodeEncoding()).GetBytes(info.UserName), (new UnicodeEncoding()).GetBytes(DateTime.Now.ToString()), (new UnicodeEncoding()).GetBytes(audioFile + ".txt"), 0); AudioTechReview_SetReportType(h, 1); if (info.IsCheckMutedbfs) { //AudioTechReview_SetLowLevelParam(h, uint.Parse((info.MuteDuration * 1000).ToString()), info.Mutedbfs, 0.9f); AudioTechReview_SetLowLevelParam_Limit(h, uint.Parse((info.MuteDuration * 1000).ToString()), info.Mutedbfs, 1.0f); } if (info.IsCheckOverloaddbfs) { //AudioTechReview_SetMaxLevelParam(h, uint.Parse("1000"), info.Overloaddbfs, 0.9f); AudioTechReview_SetMaxLevelParam_Limit(h, uint.Parse("1000"), info.Overloaddbfs, 1.0f); } if (info.IsCheckReverse) { //AudioTechReview_SetAntiphaseParam(h, uint.Parse((info.ReversDuration * 1000).ToString()), (float)info.Reverse, 0.9f); AudioTechReview_SetAntiphaseParam_Limit(h, uint.Parse((info.ReversDuration * 1000).ToString()), (float)info.Reverse, 1.0f); } if (info.IsCheckSLevelThreshold_Limit) { //AudioTechReview_SetLRLevelDiffParam(h, uint.Parse((info.NLRLevelTime_Limit * 1000).ToString()), info.SLevelThreshold_Limit, 1); AudioTechReview_SetLRLevelDiffParam_Limit(h, uint.Parse((info.NLRLevelTime_Limit * 1000).ToString()), info.SLevelThreshold_Limit, 1); } AudioTechReview_StartReview(h); }
public static bool AudioCheck(AudioCheckSettingsInfo pAinfo, string fileName, string title, out string report) { try { ClassAudioTechReview.StartAudioCheck(pAinfo, fileName); while (ClassAudioTechReview.GetProgress() != 100) { Application.DoEvents(); } report = ""; if (ClassAudioTechReview.GetAudioCheckStatus()) { if (File.Exists(fileName + ".txt")) { report = File.ReadAllText(fileName + ".txt", Encoding.GetEncoding("gb2312")); } try { if (File.Exists(fileName + ".txt")) { File.Delete(fileName + ".txt"); } } catch { } return(false); } else { return(true); } } catch (Exception ex) { report = ex.Message; return(false); } finally { ClassAudioTechReview.DestroyInstance(); } }
private void AudioCheckByFiles(string[] pFiles) { try { TotalCount = 0; AudioOKCount = 0; LowLevelAlarmCount = 0; MaxLevelAlarmCount = 0; AntiphaseAlarmCount = 0; LRLevelDiffAlarmCount = 0; TotalAlarmCount = 0; AppendMessageLine("开始音频质检..."); AudioCheckInfo = GetAudioCheckSettingsInfo(); foreach (var item in pFiles) { try { if (!isStart) { break; } if (txtInfo.Text.Length > txtInfo.MaxLength) { txtInfo.Text = ""; } string fileName = Path.GetFileNameWithoutExtension(item); string report = ""; this.TotalCount++; if (doAudioCheck(item, out report)) { AppendMessageLine("质检成功,文件路径:" + item); this.AudioOKCount++; } else { AppendMessageLine("质检失败,文件路径:" + item); ReportAnalysis(report, item); this.TotalAlarmCount++; } } catch (Exception ex) { CommonFunction.WriteLocalLog("调用方法AudioCheckByFiles()异常,错误信息:" + ex.Message); continue; } finally { try { if (File.Exists(item + ".xml")) { File.Delete(item + ".xml"); } } catch { } } } } catch (Exception ex) { CommonFunction.WriteLocalLog("调用方法AudioCheckByFiles()异常,错误信息:" + ex.Message); } finally { AppendMessageLine("共质检" + this.TotalCount + "文件,成功:" + this.AudioOKCount + "个文件, 报警:" + this.TotalAlarmCount + "个文件"); AppendMessageLine("静音报警文件数:" + LowLevelAlarmCount); AppendMessageLine("过载报警文件数:" + MaxLevelAlarmCount); AppendMessageLine("反相报警文件数:" + AntiphaseAlarmCount); AppendMessageLine("左右电平差报警文件数:" + LRLevelDiffAlarmCount); } }