public override void OnStart(EncoderOption option)
        {
            this.option = option;

            var audio_file = StoryboardInstanceManager.ActivityInstance?.Info?.audio_file_path;

            audio_reader = new MediaReader(audio_file);

            audio_decoder = audio_reader.Decoders.OfType <AudioDecoder>().FirstOrDefault();

            #region Video Init

            var video_format = new VideoFormat(option.Width, option.Height, AVPixelFormat.Bgr24);
            var video_param  = new VideoEncoderParameters()
            {
                FrameRate = new Fraction(option.FPS), BitRate = option.BitRate
            };

            video_encoder = new VideoEncoder(option.EncoderName, video_format, video_param);

            #endregion Video Init

            writer = new MediaWriter(option.OutputPath, false).AddEncoder(video_encoder);

            if (audio_decoder != null)
            {
                audio_encoder = new AudioEncoder(audio_decoder.ID, audio_decoder.OutFormat, BitRate._192Kbps);
                writer.AddEncoder(audio_encoder);
            }

            writer.Initialize();

            Log.User($"Format :{video_format.ToString()}\nVideo Encoder :{video_encoder.ToString()}");

            video_frame = new VideoFrame(video_format);
            audio_frame = new AudioFrame(audio_decoder.OutFormat);

            audio_encoding_thread      = new Thread(AudioEncoding);
            audio_encoding_thread.Name = "Audio Encoder Thread";
            audio_encoding_thread.Start();
        }