こんにちは、mediarecorder API を使用して、h264 ビデオと aac オーディオを含む mpeg2ts 出力を生成しようとしています。
1) ビデオを単独で録画すると、生成された出力 .ts ファイルは遅延なく正常に動作します。2) オーディオとビデオの両方を記録すると、アプリケーションがクラッシュします。オンラインで検索したところ、AOSP フレームワークで見つかった MPEG2TS writer.cpp のバグであり、このリンクに基づいていることがわかりました << code.google.com/p/android/issues/detail?id=37714 > > 提案されたパッチを適用し、同じことを試しました。オーディオとビデオの両方をエンコードできましたが、生成された出力ファイルに問題がありました。
3) ライターが正しく動作しませんでした。ラグがありました。最初にビデオフレームが再生され、次にビデオがフリーズしている間にオーディオが再生され、これが続きました。
4) ライター コードはここにあります -> << androidxref.com/4.2.2_r1/xref/frameworks/av/media/libstagefright/MPEG2TSWriter.cpp >>
追加したパッチはここにあります -> << code.google.com/p/android/issues/attachmentText?id=37714&aid=377140007000&name=patch&token=E7rjXqE55TIp50S7sI04mxbsRCA%3A1384836153502 >>
5) ライターの何が問題なのか、コード内でどのように修正すればよいのか教えてください。また、修正されたコード スニペットをいくつか提供してください。
私のアンドロイドのソースコードは:
myCamera = getCameraInstance();
mediaRecorder = new MediaRecorder();
myCamera.unlock();
mediaRecorder.setCamera(myCamera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setOutputFormat(8);
mediaRecorder.setOutputFile("/sdcard/myvideo.ts");
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setVideoSize(320, 240);
mediaRecorder.setVideoFrameRate(15);
mediaRecorder.setMaxDuration(20);
mediaRecorder.setMaxFileSize(10000);
mediaRecorder.setPreviewDisplay(myCameraSurfaceView.getHolder()
.getSurface());
6) ts ライターが動作するようになったら、ライブ ストリーミング用に RTP 経由で ts パケットを送信する必要があるため、ts ライターの問題の修正を手伝ってください。