一旦我停止从MediaRecorder
开始录制,它就不会在某些型号(OnePlus 5,三星的某些型号)上保存正确的持续时间。也尝试从外部播放器播放录制的文件。搜索栏显示10秒钟视频的总时长为5小时以上。这是我的设置方式:
File outputDir = mContext.getCacheDir();
try {
mTempOutputFile = File.createTempFile("temp_mov", "mp4", outputDir);
} catch (IOException e) {}
mMediaRecorder = new MediaRecorder();
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setOutputFile(mTempOutputFile.getPath());
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setVideoEncodingBitRate(VIDEO_BIT_RATE);
mMediaRecorder.setVideoSize(VIDEO_WIDTH, VIDEO_HEIGHT);
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mMediaRecorder.setAudioEncodingBitRate(44800);
mMediaRecorder.setOrientationHint(0);
try {
mMediaRecorder.prepare();
} catch (IOException e) {}
我需要正确的持续时间,因为mp4Parser将其用于修整等。如何保存正确的工期?我可以以编程方式在元数据中输入记录的持续时间吗?
我已经提到了链接here和here,但这对我没有多大帮助,因为我需要做更多的工作,而不仅仅是增加持续时间,进一步使用mp4parser。