private void Page_Load(object sender, System.EventArgs e) { WMEncoder encoder = new WMEncoder(); WMEncProfile2 profile = new WMEncProfile2(); profile.LoadFromFile(Server.MapPath("~/scmeda.prx")); IWMEncSourceGroupCollection srcGrpColl = encoder.SourceGroupCollection; IWMEncSourceGroup srcGrp = srcGrpColl.Add("SingleEncode"); srcGrp.set_Profile(profile); IWMEncAudioSource audio = (WMEncoderLib.IWMEncAudioSource)srcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_AUDIO); audio.SetInput(Server.MapPath("~/cabeloEncolheu.wma"), "", ""); audio.PreProcessPass = 0; IWMEncFile2 file = (IWMEncFile2)encoder.File; file.LocalFileName = Server.MapPath("~/cabeloEncolheu.mp3"); encoder.PrepareToEncode(true); encoder.Start(); }
public static IWMEncProfile2 LoadEncodingProfile(WMEncoder encoder, string profileFilePath) { if (encoder == null) throw new ArgumentNullException("encoder", "Invalid WMEncoder parameter."); WMEncProfile2 profile2 = new WMEncProfile2(); profile2.LoadFromFile(profileFilePath); return (IWMEncProfile2)profile2; }
public static IWMEncProfile2 LoadEncodingProfile(WMEncoder encoder, string profileFilePath) { if (encoder == null) { throw new ArgumentNullException("encoder", "Invalid WMEncoder parameter."); } WMEncProfile2 profile2 = new WMEncProfile2(); profile2.LoadFromFile(profileFilePath); return((IWMEncProfile2)profile2); }
private void ComboBox_PreProc_SelectionChanged(object sender, SelectionChangedEventArgs e) { WMEncProfile2 pro = null; try { if (System.IO.File.Exists(ProfileFile.Text) && ComboBox_PreProc.SelectedIndex != -1) { pro = new WMEncProfile2(); pro.LoadFromFile(ProfileFile.Text); int intProContentType = pro.ContentType; string strPreProc = (sender as ComboBox).SelectedValue.ToString(); strPreProc = strPreProc.Remove(0, strPreProc.LastIndexOf(':') + 1); if (intProContentType == 16 || intProContentType == 17) { pro.set_InterlaceMode(0, false); switch (strPreProc) { case "Process Interlaced Auto": case "Process Interlaced Top First": case "Process Interlaced Bottom First": MessageBox.Show(this, "The profile does not support the type of preprocessing selected." + Environment.NewLine + Environment.NewLine + "Change the preprocessing selected or check the box" + Environment.NewLine + "in the profile editor next to 'Allow Interlaced Processing' for this profile.", "Error"); ComboBox_PreProc.Focus(); ComboBox_PreProc.SelectedIndex = -1; break; } } if (intProContentType == 1) { SaveFileDialog <TargetWindow> dlg = _parentDlg as SaveFileDialog <TargetWindow>; dlg.FilterIndex = 3; } } _parentDlg.FileDlgEnableOkBtn = ComboBox_PreProc.SelectedIndex != -1; } catch (System.Runtime.InteropServices.COMException ex) { InstallEncoderQuery(ex); } finally { if (pro != null) { Marshal.ReleaseComObject(pro); } } }
private void sEvalProfile(string strProfilePath) { WMEncProfile2 pro = null; int intVideoMode = 0; int intAudioMode = 0; bool boolVideoTwoPassLock = false; int intVideoPasses = 0; bool boolAudioTwoPassLock = false; int intAudioPasses = 0; int intProContentType = 0; try { pro = new WMEncProfile2(); pro.LoadFromFile(strProfilePath); intProContentType = pro.ContentType; intVideoMode = (int)pro.get_VBRMode(WMENC_SOURCE_TYPE.WMENC_VIDEO, 0); intAudioMode = (int)pro.get_VBRMode(WMENC_SOURCE_TYPE.WMENC_AUDIO, 0); if (intVideoMode == 1) { boolVideoTwoPassLock = false; intVideoPasses = 0; } else if (intVideoMode == 2) { boolVideoTwoPassLock = true; intVideoPasses = 2; } else if (intVideoMode == 3) { boolVideoTwoPassLock = true; intVideoPasses = 1; } else if (intVideoMode == 4) { boolVideoTwoPassLock = true; intVideoPasses = 2; } if (intAudioMode == 1) { boolAudioTwoPassLock = false; intAudioPasses = 0; } else if (intAudioMode == 2) { boolAudioTwoPassLock = true; intAudioPasses = 2; } else if (intAudioMode == 3) { boolAudioTwoPassLock = true; intAudioPasses = 1; } else if (intAudioMode == 4) { boolAudioTwoPassLock = true; intAudioPasses = 2; } if (boolAudioTwoPassLock == true | boolVideoTwoPassLock == true) { CheckBox_TwoPass.IsEnabled = false; } else { CheckBox_TwoPass.IsEnabled = true; } if (intVideoPasses > intAudioPasses) { if (intVideoPasses == 0) { CheckBox_TwoPass.IsChecked = false; } else if (intVideoPasses == 1) { CheckBox_TwoPass.IsChecked = false; } else if (intVideoPasses == 2) { CheckBox_TwoPass.IsChecked = true; } } else { if (intAudioPasses == 0) { CheckBox_TwoPass.IsChecked = false; } else if (intAudioPasses == 1) { CheckBox_TwoPass.IsChecked = false; } else if (intAudioPasses == 2) { CheckBox_TwoPass.IsChecked = true; } } } catch (System.Runtime.InteropServices.COMException ex) { InstallEncoderQuery(ex); } catch (Exception ex) { string strError = ex.ToString(); _parentDlg.FileDlgEnableOkBtn = false; } finally { if (pro != null) { Marshal.ReleaseComObject(pro); } } }
void _backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { string glbstrErrLocation; WMEncoder Encoder = null; WMEncProfile2 Profile = null; IWMDRMContentAuthor DRMAuthor = null; IWMDRMProfileCollection DRMProColl = null; IWMDRMProfile DRMPro = null; IWMEncSourceGroup SrcGrp = null; IWMEncAudioSource SrcAud = null; IWMEncVideoSource2 SrcVid = null; _TwoPassEncoding = false; bool glbboolEncodingContinue = true;; DateTime time = DateTime.Now; try { Encoder = new WMEncoder(); Encoder.OnStateChange += new _IWMEncoderEvents_OnStateChangeEventHandler(this.Encoder_OnStateChange); _SrcGrpColl = Encoder.SourceGroupCollection; try { DRMAuthor = Encoder.EncoderDRMContentAuthor; DRMProColl = DRMAuthor.DRMProfileCollection; DRMPro = null; object vKeyID = null; if (_encodeInfo.DRMProfile != "None") { int intDRMProCount = 0; for (intDRMProCount = 0; intDRMProCount <= DRMProColl.Count - 1; intDRMProCount++) { if (DRMProColl.Item(intDRMProCount).Name == _encodeInfo.DRMProfile) { DRMPro = DRMProColl.Item(intDRMProCount); break; } } DRMAuthor.SetSessionDRMProfile(DRMPro.ID, ref vKeyID); } else { DRMAuthor.SetSessionDRMProfile(System.DBNull.Value.ToString(), ref vKeyID); DRMAuthor = null; DRMProColl = null; DRMPro = null; vKeyID = null; } } catch (Exception ex) { glbstrErrLocation = "Specify DRM Profile - " + ex.Message.ToString(); throw new ApplicationException(glbstrErrLocation, ex); } Profile = new WMEncProfile2(); Int32 intProContentType = 0; int intProVBRModeAudio = 0; int intProVBRModeVideo = 0; try { Profile.LoadFromFile(_encodeInfo.Profile); intProContentType = Profile.ContentType; intProVBRModeAudio = (int)Profile.get_VBRMode(WMENC_SOURCE_TYPE.WMENC_AUDIO, 0); intProVBRModeVideo = (int)Profile.get_VBRMode(WMENC_SOURCE_TYPE.WMENC_VIDEO, 0); } catch (Exception ex) { glbstrErrLocation = "Load Profile - " + ex.Message.ToString(); throw new ApplicationException(glbstrErrLocation, ex); } try { SrcGrp = _SrcGrpColl.Add("BatchEncode"); } catch (Exception ex) { glbstrErrLocation = "Source Group - " + ex.Message.ToString(); throw new ApplicationException(glbstrErrLocation, ex); } string strDestExtension = System.IO.Path.GetExtension(_encodeInfo.Destination); try { if (intProContentType == 1) { SrcAud = (WMEncoderLib.IWMEncAudioSource)SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_AUDIO); SrcAud.SetInput(_encodeInfo.Source, "", ""); } else if (intProContentType == 16) { SrcVid = (WMEncoderLib.IWMEncVideoSource2)SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_VIDEO); SrcVid.SetInput(_encodeInfo.Source, "", ""); } else if (intProContentType == 17) { SrcAud = (WMEncoderLib.IWMEncAudioSource)SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_AUDIO); SrcAud.SetInput(_encodeInfo.Source, "", ""); SrcVid = (WMEncoderLib.IWMEncVideoSource2)SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_VIDEO); SrcVid.SetInput(_encodeInfo.Source, "", ""); } else { _backgroundWorker.ReportProgress(0, "BatchEncode does not support this type of profile"); } } catch (Exception ex) { glbstrErrLocation = "Video / Audio Source - " + ex.Message.ToString(); throw new ApplicationException(glbstrErrLocation, ex); } try { SrcGrp.set_Profile(Profile); } catch (Exception ex) { glbstrErrLocation = "Encoding Profile - " + ex.Message.ToString(); throw new ApplicationException(glbstrErrLocation, ex); } IWMEncDisplayInfo Descr = Encoder.DisplayInfo; try { if (_encodeInfo.Title != "") { Descr.Title = _encodeInfo.Title; } if (_encodeInfo.Description != "") { Descr.Description = _encodeInfo.Description; } if (_encodeInfo.Author != "") { Descr.Author = _encodeInfo.Author; } if (_encodeInfo.Copyright != "") { Descr.Copyright = _encodeInfo.Copyright; } } catch (Exception ex) { glbstrErrLocation = "Display Information - " + ex.Message.ToString(); throw new ApplicationException(glbstrErrLocation, ex); } try { if (intProContentType == 16 || intProContentType == 17) { if (_encodeInfo.Crop == true) { SrcVid.CroppingBottomMargin = (int)_encodeInfo.CropBottom; SrcVid.CroppingTopMargin = (int)_encodeInfo.CropTop; SrcVid.CroppingLeftMargin = (int)_encodeInfo.CropLeft; SrcVid.CroppingRightMargin = (int)_encodeInfo.CropRight; } } } catch (Exception ex) { glbstrErrLocation = "Cropping - " + ex.Message.ToString(); throw new ApplicationException(glbstrErrLocation, ex); } try { if (intProContentType == 16 || intProContentType == 17) { SrcVid.Optimization = _encodeInfo.Preproc; } } catch (Exception ex) { glbstrErrLocation = "Video Optimization - " + ex.Message.ToString(); throw new ApplicationException(glbstrErrLocation, ex); } try { if (intProContentType == 1) { if (_encodeInfo.TwoPass == false) { SrcAud.PreProcessPass = 0; _TwoPassEncoding = false; } else { SrcAud.PreProcessPass = 1; _TwoPassEncoding = true; glbPassNumber = 1; } } else if (intProContentType == 16) { if (_encodeInfo.TwoPass == false) { SrcVid.PreProcessPass = 0; _TwoPassEncoding = false; } else { SrcVid.PreProcessPass = 1; _TwoPassEncoding = true; glbPassNumber = 1; } } else if (intProContentType == 17) { if (_encodeInfo.TwoPass == false) { SrcAud.PreProcessPass = 0; SrcVid.PreProcessPass = 0; _TwoPassEncoding = false; } else { switch (intProVBRModeAudio) { case 1: SrcAud.PreProcessPass = 1; break; case 2: SrcAud.PreProcessPass = 1; break; case 3: SrcAud.PreProcessPass = 0; break; case 4: SrcAud.PreProcessPass = 1; break; } switch (intProVBRModeVideo) { case 1: SrcVid.PreProcessPass = 1; break; case 2: SrcVid.PreProcessPass = 1; break; case 3: SrcVid.PreProcessPass = 0; break; case 4: SrcVid.PreProcessPass = 1; break; } _TwoPassEncoding = true; glbPassNumber = 1; } } else { _backgroundWorker.ReportProgress(0, "BatchEncode does not support this type of profile"); } } catch (Exception ex) { glbstrErrLocation = "Passes - " + ex.Message.ToString(); throw new ApplicationException(glbstrErrLocation, ex); } IWMEncFile2 File = (IWMEncFile2)Encoder.File; try { File.LocalFileName = _encodeInfo.Destination; } catch (Exception ex) { glbstrErrLocation = "Output File - " + ex.Message.ToString(); throw new ApplicationException(glbstrErrLocation, ex); } int intDurationAudio = 0; int intDurationVideo = 0; int intDurationFinal; try { _backgroundWorker.ReportProgress(0, "Preparing to encode"); Encoder.PrepareToEncode(true); } catch (Exception ex) { glbstrErrLocation = "Encoder Prepare - " + ex.Message.ToString(); throw new ApplicationException(glbstrErrLocation, ex); } try { if (SrcAud != null) { intDurationAudio = System.Convert.ToInt32(SrcAud.Duration / 1000); } } catch (Exception) { } try { if (SrcVid != null) { intDurationVideo = System.Convert.ToInt32(SrcVid.Duration / 1000); } } catch (Exception) { } if (intDurationAudio == 0) { intDurationFinal = intDurationVideo; } else if (intDurationVideo == 0) { intDurationFinal = intDurationAudio; } else { if (intDurationVideo >= intDurationAudio) { intDurationFinal = intDurationVideo; } else { intDurationFinal = intDurationAudio; } } glbintSourceDuration = intDurationFinal; try { if (glbboolEncodingContinue == true) { Encoder.Start(); do { if (_backgroundWorker.CancellationPending) { Encoder.Stop(); e.Cancel = true; _ev.Set(); } sReportPercentComplete(Encoder); }while (!_ev.WaitOne(1000)); } } catch (Exception ex) { glbstrErrLocation = "Encoder Start - " + ex.Message.ToString(); throw new ApplicationException(glbstrErrLocation, ex); } if (e.Cancel) { return; } else { _backgroundWorker.ReportProgress(0, "Encoding Complete"); return; } } finally { if (_SrcGrpColl != null) { try { Encoder.Stop(); _SrcGrpColl.Remove(0); } catch { } Marshal.ReleaseComObject(_SrcGrpColl); _SrcGrpColl = null; } if (Profile != null) { Marshal.ReleaseComObject(Profile); Profile = null; } if (Encoder != null) { Encoder.OnStateChange -= new _IWMEncoderEvents_OnStateChangeEventHandler(this.Encoder_OnStateChange); Marshal.ReleaseComObject(Encoder); Encoder = null; } e.Result = DateTime.Now - time; } }