示例#1
0
        private CompletionStatus ExecuteComplex(string src, string dst)
        {
            var dstEncode  = GetPathWithoutExtension(dst) + "_.mp4";
            var dstExtract = GetPathWithoutExtension(dst) + "_.mkv";
            var dstAac     = GetPathWithoutExtension(dst) + "_.aac";

            s_jobId++;
            CompletionStatus result;

            _uiManager.Start(this, s_jobId, "Encoding to H264/AAC (Complex)");

            var            optionsMain = new ProcessOptionsEncoder(s_jobId, "", true);
            IProcessWorker processMain = null;
            var            taskMain    = Task.Run(() => _encoder.EncodeFFmpeg(src, dstEncode, "h264", null, "", optionsMain));

            var options = new ProcessOptionsEncoder(s_jobId, "Extracting Audio", false);

            result = _muxer.ExtractAudio(src, dstExtract, options);
            if (result == CompletionStatus.Success)
            {
                options.Title = "Encoding Audio";
                result        = _encoder.EncodeFFmpeg(dstExtract, dstAac, null, "aac", null, options,
                                                      (s, p) => processMain = p.ProcessWorker);
            }

            if (result != CompletionStatus.Success)
            {
                processMain?.Cancel();
            }

            taskMain.Wait();
            var result2 = taskMain.Result;

            if (result == CompletionStatus.Success && result2 == CompletionStatus.Success)
            {
                options.Title = "Muxing Audio and Video";
                result        = _muxer.Muxe(dstEncode, dstAac, dst, options);
            }

            File.Delete(dstEncode);
            File.Delete(dstExtract);
            File.Delete(dstAac);
            _uiManager.Close(s_jobId);

            return(GetStatus(result, result2));
        }
示例#2
0
        private CompletionStatus ExecuteComplex(string src, string dst)
        {
            string DstEncode  = GetPathWithoutExtension(dst) + "_.mp4";
            string DstExtract = GetPathWithoutExtension(dst) + "_.mkv";
            string DstAac     = GetPathWithoutExtension(dst) + "_.aac";

            jobId++;
            CompletionStatus Result;

            ffmpegManagerUI.Start(jobId, "Encoding to H264/AAC (Complex)");

            ProcessOptionsEncoder   OptionsMain = new ProcessOptionsEncoder(jobId, "", true);
            IProcessWorker          ProcessMain = null;
            Task <CompletionStatus> TaskMain    = Task.Run(() => encoder.EncodeFFmpeg(src, DstEncode, "h264", null, "", OptionsMain));

            ProcessOptionsEncoder Options = new ProcessOptionsEncoder(jobId, "Extracting Audio", false);

            Result = muxer.ExtractAudio(src, DstExtract, Options);
            if (Result == CompletionStatus.Success)
            {
                Options.Title = "Encoding Audio";
                Result        = encoder.EncodeFFmpeg(DstExtract, DstAac, null, "aac", null, Options,
                                                     (s, p) => ProcessMain = p.ProcessWorker);
            }

            if (Result != CompletionStatus.Success)
            {
                ProcessMain?.Cancel();
            }

            TaskMain.Wait();
            CompletionStatus Result2 = TaskMain.Result;

            if (Result == CompletionStatus.Success && Result2 == CompletionStatus.Success)
            {
                Options.Title = "Muxing Audio and Video";
                Result        = muxer.Muxe(DstEncode, DstAac, dst, Options);
            }

            File.Delete(DstEncode);
            File.Delete(DstExtract);
            File.Delete(DstAac);
            ffmpegManagerUI.Stop(jobId);
            return(Result);
        }
 private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
 {
     host?.Cancel();
     task?.Cancel();
 }