我遇到了一个错误,该错误主要存在于三星设备上。 我使用媒体录制器录制视频(代码如下所示)。可以在所有设备上正常运行,但是现在在某些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