15

MIME タイプ "video/avc" をCamera使用してプレビュー データをエンコードし、エンコードされたデータ (ビデオのみ、オーディオなし) を に渡します。マルチプレクサは正常に動作しているようで、適切なサイズの出力ファイルを作成します (つまり、記録が長くなるほど大きくなります)。ただし、マルチプレクサを停止しようとすると、「マルチプレクサを停止できませんでした」というエラーが表示されます。MediaCodecMediaMuxer

10-21 10:39:40.755: E/AndroidRuntime(2166): Caused by: java.lang.IllegalStateException: Failed to stop the muxer

失敗した停止の前に、いくつかの疑わしい MPEG4Writer ログ メッセージがあります。

10-21 10:39:40.740: D/MPEG4Writer(2166): Stopping Video track
10-21 10:39:40.740: E/MPEG4Writer(2166): Missing codec specific data
10-21 10:39:40.740: W/MPEG4Writer(2166): 0-duration samples found: 122
10-21 10:39:40.740: I/MPEG4Writer(2166): Received total/0-length (123/1) buffers and encoded 123 frames. - video
10-21 10:39:40.740: D/MPEG4Writer(2166): Stopping Video track source
10-21 10:39:40.740: D/MPEG4Writer(2166): Video track stopped
10-21 10:39:40.740: D/MPEG4Writer(2166): Stopping writer thread
10-21 10:39:40.740: D/MPEG4Writer(2166): 0 chunks are written in the last batch
10-21 10:39:40.740: D/MPEG4Writer(2166): Writer thread stopped
10-21 10:39:40.740: E/MPEG4Writer(2166): writer error ended!

これを引き起こしている手がかりはありますか?さらに必要な情報がわからない。

4

3 に答える 3

18
E/MPEG4Writer(2166): Missing codec specific data

CSD を含む で電話MediaMuxer#addTrack()しなかったようです。これを行う方法の例については、 EncodeAndMuxTest.javaMediaFormatコードを参照してください。

で使用されているMPEG4Writerの実装を見ると、2360 行目にチェックMediaMuxerがあります。isTrackMalformed()CSD データが存在しない場合に設定しますERROR_MALFORMEDが、すぐには戻りません。何もエラーをクリアしないため、一連の作業を行ってから失敗します。これは、表示されているものと一致しているようです.

于 2013-10-22T00:15:08.943 に答える
3

Android 5.0.2 デバイス Moto E には 2 つの問題があります 1) 16 の倍数が指定されていない場合、幅と高さがクラッシュします 2) 最初のフレームがエンコードされた後に設定される mediaBuffer

于 2016-02-08T13:32:29.593 に答える