我遇到了一个错误,主要出现在三星设备上。
我用媒体记录器录制视频(代码如下所示)。它在所有设备上都能完美运行,但现在在某些 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 秒(如果您的视频以 30 fps 捕获)将解决此问题。
这是相应的错误线程:https://github.com/googlesamples/android-Camera2Video/issues/24
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)