到目前为止,我的视频录制应用程序运行良好,因为调用_mediaRecorder.SetMaxDuration(120000)
会在两分钟后调用MediaRecordInfo,其中event.What == MediaRecorderInfo.MaxDurationReached
会返回。
令人惊讶的是,在Android 8.1上,此回调在启动mediarecorder之后立即出现。
如果我没有设置最长持续时间,我在8.1上也可以捕捉到超过一秒的视频。
7.0和9.0没有这个问题。
有什么想法吗?
这里有一些代码,虽然我不知道是不是出现问题,但是我可以粘贴整个视频类。
private void SetupMediaRecorder()
{
MediaRecorder.SetAudioSource(AudioSource.Mic);
MediaRecorder.SetVideoSource(VideoSource.Surface);
MediaRecorder.SetOutputFormat(OutputFormat.Mpeg4);
MediaRecorder.SetVideoEncoder(VideoEncoder.H264);
MediaRecorder.SetAudioEncoder(AudioEncoder.Aac);
MediaRecorder.SetOutputFile(outputURL);
MediaRecorder.SetVideoSize(1280, 720);
//Modify for changes in output size & quality
MediaRecorder.SetVideoFrameRate(30);
MediaRecorder.SetVideoEncodingBitRate(2000000);
//MediaRecorder.SetVideoSize(videoSize.Width, videoSize.Height);
MediaRecorder.SetMaxDuration(120000);
//Set audio bitrate
int bitDepth = 16;
int sampleRate = 44100;
int bitRate = sampleRate * bitDepth;
MediaRecorder.SetAudioEncodingBitRate(bitRate);
MediaRecorder.SetAudioSamplingRate(sampleRate);
int rotation = (int)ThisActivity.WindowManager.DefaultDisplay.Rotation;
int orientation = orientations[rotation];
MediaRecorder.SetOrientationHint(orientation);
MediaRecorder.Prepare();
}
private void MediaRecorder_Info(object sender, MediaRecorder.InfoEventArgs e)
{
if (e.What == MediaRecorderInfo.MaxDurationReached)
{
//Called immediately after MediaRecorder.Start() on Android 8.1
}
}