首页 > 解决方案 > Android.Media.MediaRecorder - 录制音频时的延迟,部分静音

问题描述

请帮助解决问题。要录制音频文件,我使用 Android.Media.MediaRecorder。结果,我在文件的开头和结尾得到了一个静音 650 毫秒的部分。事实证明,开头和结尾的那部分短语没有被记录下来,只有沉默。

public static async Task Record(CancellationToken token)
    {
        try
        {
            var filename = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + "/temp.amr";
            var tmp = new Java.IO.File(filename);
            if (tmp.Exists()) tmp.Delete();
            var recorder = new MediaRecorder();
            recorder.SetAudioSource(AudioSource.Mic);
            recorder.SetOutputFormat(OutputFormat.AmrNb);
            recorder.SetAudioEncoder(AudioEncoder.AmrNb);
            recorder.SetOutputFile(filename);
            recorder.Prepare();
            recorder.Start();
            try
            {
                var div = MAX_RECORD_TIME / 100;
                for(int i=0; i<div; i++)
                {
                    IncrementProgressBar(100 / div);
                    await Task.Delay(div, token);
                }
                fSave = true;
            }
            catch (OperationCanceledException) { }
            recorder.Stop();
        }
        catch (Exception e)
        {
            string s = context.GetText(Resource.String.err_unexpected) + "\r" + e.Message;
            handler.ToastMessage(s, ToastLength.Short);
        }
    }

标签: c#androidxamarinmediarecorderandroid-mediarecorder

解决方案


这个问题无法通过代码解决,看来是硬件问题。您可以在默认的相机应用程序中看到相同的延迟,该应用程序也使用MediaRecorder. 不幸的是,某些设备的行为会有所不同。

解决方案是使用AudioRecorder更灵活的类,因为它更接近硬件


推荐阅读