public Form1()
        {
            InitializeComponent();
            //int res = MediaFileRecorder.MR_Add(1, 2);
            log_delegate = new MediaFileRecorder.MR_LogCallback(this.MR_LogCallback);

            MediaFileRecorder.MR_SetLogCallBack(log_delegate);
            // GC.KeepAlive(log_delegate);

            m_RecordObject = MediaFileRecorder.MR_CreateScreenAudioRecorder();

            string fileName = "test.mp4";

            MediaFileRecorder.RECT video_capture_rect;
            video_capture_rect.left   = 0;
            video_capture_rect.top    = 0;
            video_capture_rect.right  = 1920;
            video_capture_rect.bottom = 1080;
            m_stRecordInfo.file_name  = new byte[1024];
            Array.Copy(System.Text.Encoding.UTF8.GetBytes(fileName), m_stRecordInfo.file_name, fileName.Length);
            m_stRecordInfo.is_record_mic            = 1;
            m_stRecordInfo.is_record_speaker        = 1;
            m_stRecordInfo.is_record_video          = 1;
            m_stRecordInfo.video_capture_rect       = video_capture_rect;
            m_stRecordInfo.video_frame_rate         = 20;
            m_stRecordInfo.video_bit_rate           = 4096000;
            m_stRecordInfo.video_bit_rate_tolerance = 10240;
            m_stRecordInfo.quality          = MediaFileRecorder.QUALITY.VERY_HIGH;
            m_stRecordInfo.video_dst_width  = /*1920*/ video_capture_rect.right - video_capture_rect.left;
            m_stRecordInfo.video_dst_height = /*1080*/ video_capture_rect.bottom - video_capture_rect.top;

            int ret = MediaFileRecorder.MR_SetRecordInfo(m_RecordObject, ref m_stRecordInfo);
        }
        private void button_start_MouseClick(object sender, MouseEventArgs e)
        {
            if (!m_bStarted)
            {
                int ret = MediaFileRecorder.MR_StartRecord(m_RecordObject);
                if ((ret & (int)MediaFileRecorder.RECORD_START_RESULT.STATE_NOT_RIGHT) != 0)
                {
                    System.Diagnostics.Debug.WriteLine("Start record: state not right");
                }
                else if ((ret & (int)MediaFileRecorder.RECORD_START_RESULT.PARAMETER_INVALID) != 0)
                {
                    System.Diagnostics.Debug.WriteLine("Start record: parameter invalid");
                }
                else if ((ret & (int)MediaFileRecorder.RECORD_START_RESULT.START_SCRREEN_CAPTURE_FAILED) != 0)
                {
                    System.Diagnostics.Debug.WriteLine("Start record: start screen capture failed");
                }
                else if ((ret & (int)MediaFileRecorder.RECORD_START_RESULT.START_MIC_CAPTURE_FAILED) != 0)
                {
                    System.Diagnostics.Debug.WriteLine("Start record: start mic capture failed");
                }
                else if ((ret & (int)MediaFileRecorder.RECORD_START_RESULT.START_SPEAKER_CAPTURE_FAILED) != 0)
                {
                    System.Diagnostics.Debug.WriteLine("Start record: start speaker capture failed");
                }
                else if ((ret & (int)MediaFileRecorder.RECORD_START_RESULT.INIT_MEDIA_FILE_RECORDER_FAILED) != 0)
                {
                    System.Diagnostics.Debug.WriteLine("Start record: init media file recorder failed");
                }
                else if ((ret & (int)MediaFileRecorder.RECORD_START_RESULT.START_MEDIA_FILE_RECORDER_FAILED) != 0)
                {
                    System.Diagnostics.Debug.WriteLine("Start record: start media file recorder failed");
                }


                Button s = (Button)sender;
                s.Text     = "结束";
                m_bStarted = true;
            }
            else
            {
                int ret = MediaFileRecorder.MR_StopRecord(m_RecordObject);
                if (ret == 0)
                {
                    Button s = (Button)sender;
                    s.Text     = "开始";
                    m_bStarted = false;
                }
            }
        }
 private void button_suspend_MouseClick(object sender, MouseEventArgs e)
 {
     if (!m_bSuspended)
     {
         int ret = MediaFileRecorder.MR_SuspendRecord(m_RecordObject);
         if (ret == 0)
         {
             Button s = (Button)sender;
             s.Text       = "继续";
             m_bSuspended = true;
         }
     }
     else
     {
         int ret = MediaFileRecorder.MR_ResumeRecord(m_RecordObject);
         if (ret == 0)
         {
             Button s = (Button)sender;
             s.Text       = "中断";
             m_bSuspended = false;
         }
     }
 }