我在停止MediaMuxer時遇到問題。Android MediaMuxer illegalstateexception未能停止muxer mMediaMuxer.stop()
除了我正在使用音頻外,其他人都一直跟着fadden's example,所以我不能100%確定音頻和視頻曲目排成一行。這可能是問題所在。
當我打的斷點mMediaMuxer.stop()我得到一個致命的錯誤:
09-30 17:11:21.677: E/AndroidRuntime(32304): FATAL EXCEPTION: CaptureManager
09-30 17:11:21.677: E/AndroidRuntime(32304): java.lang.IllegalStateException: Failed to stop the muxer
09-30 17:11:21.677: E/AndroidRuntime(32304): at android.media.MediaMuxer.nativeStop(Native Method)
09-30 17:11:21.677: E/AndroidRuntime(32304): at android.media.MediaMuxer.stop(MediaMuxer.java:190)
09-30 17:11:21.677: E/AndroidRuntime(32304): at com.harmonicprocesses.penelopefree.camera.MyMediaMux.stop(MyMediaMux.java:97)
09-30 17:11:21.677: E/AndroidRuntime(32304): at com.harmonicprocesses.penelopefree.camera.CaptureManager.stopMuxer(CaptureManager.java:86)
09-30 17:11:21.677: E/AndroidRuntime(32304): at com.harmonicprocesses.penelopefree.camera.MyMediaCodec.stop(MyMediaCodec.java:209)
09-30 17:11:21.677: E/AndroidRuntime(32304): at com.harmonicprocesses.penelopefree.camera.MyMediaCodec.checkEOS(MyMediaCodec.java:190)
09-30 17:11:21.677: E/AndroidRuntime(32304): at com.harmonicprocesses.penelopefree.camera.MyMediaCodec.runQue(MyMediaCodec.java:177)
09-30 17:11:21.677: E/AndroidRuntime(32304): at com.harmonicprocesses.penelopefree.camera.MyMediaCodec.runQue(MyMediaCodec.java:182)
09-30 17:11:21.677: E/AndroidRuntime(32304): at com.harmonicprocesses.penelopefree.camera.MyMediaCodec.sendEOS(MyMediaCodec.java:199)
09-30 17:11:21.677: E/AndroidRuntime(32304): at com.harmonicprocesses.penelopefree.camera.CaptureManager$2.run(CaptureManager.java:94)
09-30 17:11:21.677: E/AndroidRuntime(32304): at android.os.Handler.handleCallback(Handler.java:730)
09-30 17:11:21.677: E/AndroidRuntime(32304): at android.os.Handler.dispatchMessage(Handler.java:92)
09-30 17:11:21.677: E/AndroidRuntime(32304): at android.os.Looper.loop(Looper.java:137)
09-30 17:11:21.677: E/AndroidRuntime(32304): at android.os.HandlerThread.run(HandlerThread.java:61)
我可以進入它遠遠不夠告訴MediaMuxer.mState = MUXER_STATE_INITIALIZED當我打電話停止。但它未能在nativeStart(mNativeObject)...
if (mState == MUXER_STATE_INITIALIZED) {
nativeStart(mNativeObject);
mState = MUXER_STATE_STARTED;
logcat在異常之前是否還有其他消息?錯誤消息,狀態更新(「視頻軌已停止」),...? – fadden
是的,現在我有點離題了,我放棄了通過包裹或畫布複製信息到表面的方法。我儘可能地跟隨你的第二個例子,以便與我的東西一起工作。我相信這與混合器沒有正確設置有關,但我真的不能說。我認爲即使數據是亂碼垃圾,muxer也應該能夠將數據打包爲mp4。但我無法獲得它創建的文件。 VLC通過這個錯誤「mp4錯誤:MP4插件丟棄(沒有moov,foov,moof盒子)」 – HPP