我正在使用 MediaRecorder 在三星 Galaxy Note 2 上使用 MPEG2TS 容器录制视频。它初始化时没有任何错误,并且实际上将数据写入文件(文件增长到几 MB)。但是,该文件无法在任何媒体播放器中播放。
这是我初始化 MediaRecorder 的代码:
CamcorderProfile profile = null;
if(CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_720P)){
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_720P);
}else if(CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_480P)){
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_480P);
}else{ profile = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW); }
myMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
myMediaRecorder.setOutputFormat(8);
myMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
myMediaRecorder.setVideoFrameRate(profile.videoFrameRate);
myMediaRecorder.setVideoSize(profile.videoFrameWidth, profile.videoFrameHeight);
myMediaRecorder.setVideoEncodingBitRate(profile.videoBitRate);
String f = Environment.getExternalStorageDirectory().toString() + "/video.ts";
myMediaRecorder.setOutputFile(f);
myMediaRecorder.setPreviewDisplay(previewHolder.getSurface());
myMediaRecorder.prepare();
myMediaRecorder.start();
当我将输出格式设置为 MP4(“2”)而不是 MPEG2-TS(“8”)时,上面的代码工作得很好,但是当它设置为 8 时,它会产生一个无法播放(但不是空的)视频!
会发生什么?
编辑:如果有人感兴趣,这是设备上录制的示例视频。