MediaRecorder を使用して、Samsung 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();
上記のコードは、出力形式を MPEG2-TS ("8") ではなく MP4 ("2") に設定すると問題なく動作しますが、8 に設定すると、再生できない (ただし空ではない) ビデオが生成されます!
何が起こっているのでしょうか?
編集:誰かが興味を持っている場合は、デバイスに記録されたサンプル ビデオを次に示します。