Android.Media.MediaRecorder-记录音频时的延迟,带有无声部分

问题描述 投票:0回答:1

请帮助解决问题。要录制音频文件,我使用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# android xamarin mediarecorder android-mediarecorder
1个回答
0
投票
解决方案是使用AudioRecorder类,因为它更接近于硬件,因此它现在更加灵活
© www.soinside.com 2019 - 2024. All rights reserved.