Exemple #1
0
        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();
        }
Exemple #2
0
        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;
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
                }
            }
        }
Exemple #5
0
        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;
            }
        }