diff --git a/library-push/src/main/java/com/yinuo/library/vlc/encoder/AndroidMuxer.java b/library-push/src/main/java/com/yinuo/library/vlc/encoder/AndroidMuxer.java index a65fdd9..e038a1b 100644 --- a/library-push/src/main/java/com/yinuo/library/vlc/encoder/AndroidMuxer.java +++ b/library-push/src/main/java/com/yinuo/library/vlc/encoder/AndroidMuxer.java @@ -62,6 +62,10 @@ public class AndroidMuxer { throw new IllegalStateException(); } + if (mMuxer == null) { + throw new IllegalStateException("mMuxer is null"); + } + synchronized (mMuxer) { int track = mMuxer.addTrack(trackFormat); mVideoFormat = trackFormat; @@ -79,7 +83,7 @@ public class AndroidMuxer { } public void writeSampleData(int trackIndex, ByteBuffer encodedData, MediaCodec.BufferInfo bufferInfo) { - if (mNumReleases != 0) { + if (mNumReleases != 0 || mMuxer == null) { return; } synchronized (mMuxer) { @@ -101,20 +105,24 @@ public class AndroidMuxer { } public boolean release() { - synchronized (mMuxer) { - if (++mNumReleases == mNumTracks) { - stopMuxer(); - return true; + if (mMuxer != null) { + synchronized (mMuxer) { + if (++mNumReleases == mNumTracks) { + stopMuxer(); + return true; + } } } return false; } public void stopMuxer() { - mMuxer.stop(); - mMuxer.release(); - if (mStartRecordTime > 0 && mStartRecordTime < System.currentTimeMillis() && !TextUtils.isEmpty(mCurrentPath)) { - insertToDB(mStartRecordTime, mCurrentPath); + if (mMuxer != null) { + mMuxer.stop(); + mMuxer.release(); + if (mStartRecordTime > 0 && mStartRecordTime < System.currentTimeMillis() && !TextUtils.isEmpty(mCurrentPath)) { + insertToDB(mStartRecordTime, mCurrentPath); + } } } } diff --git a/library-push/src/main/java/com/yinuo/library/vlc/encoder/MediaCodecManager.java b/library-push/src/main/java/com/yinuo/library/vlc/encoder/MediaCodecManager.java index 9065ab8..11115f7 100644 --- a/library-push/src/main/java/com/yinuo/library/vlc/encoder/MediaCodecManager.java +++ b/library-push/src/main/java/com/yinuo/library/vlc/encoder/MediaCodecManager.java @@ -287,8 +287,12 @@ public class MediaCodecManager { @Override public void onOutputFormatChanged(@NonNull MediaCodec codec, @NonNull MediaFormat format) { - MediaFormat newFormat = mMediaCodec.getOutputFormat(); - mTrackIndex = androidMuxer.addTrack(newFormat); + try { + MediaFormat newFormat = mMediaCodec.getOutputFormat(); + mTrackIndex = androidMuxer.addTrack(newFormat); + } catch (Exception e) { + e.printStackTrace(); + } } }, mHandler); mMediaCodec.start();