Android MediaRecorder视频-随后播放音频和视频轨道

时间:2018-06-28 09:44:32

标签: android audio video xamarin.android mediarecorder

我遇到了一个错误,该错误主要存在于三星设备上。 我使用媒体录制器录制视频(代码如下所示)。可以在所有设备上正常运行,但是现在在某些Android设备上,音频和视频轨道是分开的。

说我正在捕获5秒的视频。 视频将是5秒长,播放视频将播放视频的第一帧和音频5秒。 之后,将播放5秒的视频。 默认视频播放器显示视频在5秒钟后结束,但实际上只有音频...

8.0 Oreo是否有新引入的内容,所以我必须调整MediaRecorder?

我的媒体记录器设置:

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);

            MediaRecorder.SetVideoFrameRate(30);
            MediaRecorder.SetVideoEncodingBitRate(2000000);
            MediaRecorder.SetMaxDuration(VideoManager.MAX_VIDEODURATION_MS);

            //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();
        }

编辑:我正在使用Camera2 API

EDIT2:对于某些三星设备,这似乎是一个问题。深度睡眠将导致第一帧的显示时间戳太长。将时间戳设置为1/30秒(如果以30fps捕获视频)将解决此问题。 这是一个相应的错误线程: https://github.com/googlesamples/android-Camera2Video/issues/24

0 个答案:

没有答案