Пример #1
0
        /// <summary>
        /// 順番に分割処理を実施する
        /// </summary>
        /// <param name="inputFile"></param>
        /// <param name="profileName"></param>
        /// <param name="duration"></param>
        /// <param name="num"></param>
        private static void OrderTrim(string inputFile, string profileName, int duration, int num)
        {
            WMEncoderApp app = new WMEncoderAppClass();
            IWMEncoder2  enc = app.Encoder as IWMEncoder2;

            IWMEncSourceGroupCollection sgcol = enc.SourceGroupCollection;

            IWMEncProfile profile = SelectProfile(enc, profileName);

            for (int i = 0; i < num; i++)
            {
                if (sgcol.Count > 0)
                {
                    sgcol.Remove("sg1");
                }

                IWMEncSourceGroup2 sg = sgcol.Add("sg1") as IWMEncSourceGroup2;
                sg.AutoSetFileSource(inputFile);

                int start = (duration * i) / num;
                int end   = (duration * (i + 1) / num) - 30000;

                SetMark(sg, start, end);

                sg.set_Profile(profile);

                enc.File.LocalFileName = new FileInfo(string.Format("dest{0}.wmv", i)).FullName;
                enc.PrepareToEncode(true);

                enc.Start();

                Console.WriteLine("encode start : {0} - start:{1}, end:{2}", i, start, end);

                while (enc.RunState != WMENC_ENCODER_STATE.WMENC_ENCODER_STOPPED)
                {
                    Thread.Sleep(2000);
                }

                Console.WriteLine("encode end : {0}", i);
            }

            Marshal.ReleaseComObject(profile);
            Marshal.ReleaseComObject(sgcol);
            Marshal.ReleaseComObject(enc);
            Marshal.ReleaseComObject(app);
        }