From 5421ad151c4ac1a76f54535f6b02baf21d7e1dcf Mon Sep 17 00:00:00 2001 From: xiaowusky Date: Wed, 21 Jun 2023 09:40:03 +0800 Subject: [PATCH] =?UTF-8?q?desc:=E5=BD=95=E5=88=B6=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E4=B8=8D=E5=B1=95=E7=A4=BA=E5=9C=A8=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E8=A7=86=E9=A2=91=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../library/vlc/encoder/AndroidMuxer.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/library-vlc/src/main/java/com/yinuo/library/vlc/encoder/AndroidMuxer.java b/library-vlc/src/main/java/com/yinuo/library/vlc/encoder/AndroidMuxer.java index 81f7b6e..b1241bf 100644 --- a/library-vlc/src/main/java/com/yinuo/library/vlc/encoder/AndroidMuxer.java +++ b/library-vlc/src/main/java/com/yinuo/library/vlc/encoder/AndroidMuxer.java @@ -3,6 +3,7 @@ package com.yinuo.library.vlc.encoder; import android.media.MediaCodec; import android.media.MediaFormat; import android.media.MediaMuxer; +import android.text.TextUtils; import com.common.commonlib.db.DBUtils; import com.common.commonlib.db.entity.Video; @@ -29,8 +30,10 @@ public class AndroidMuxer { private volatile int mNumReleases; private long mStartRecordTime = 0L; + + private String mCurrentPath; + private long mRecordTime = -1; private static final long DEFAULT_RECORD_DURATION = 30 * 60 * 1000; -// private static final long DEFAULT_RECORD_DURATION = 10 * 1000; public AndroidMuxer() { createMediaMuxer(); @@ -40,11 +43,11 @@ public class AndroidMuxer { try { long timeMillis = System.currentTimeMillis(); File output = CameraHelper.getOutputMediaFile(CameraHelper.MEDIA_TYPE_VIDEO, timeMillis, DEFAULT_RECORD_DURATION); - String filePath = output.getAbsolutePath(); + mCurrentPath = output.getAbsolutePath(); + mRecordTime = timeMillis; LogUtils.v(String.format("startRecording: %s", output)); - mMuxer = new MediaMuxer(filePath, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4); + mMuxer = new MediaMuxer(mCurrentPath, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4); mStarted = false; - insertToDB(timeMillis, filePath); } catch (IOException e) { e.printStackTrace(); } @@ -86,8 +89,7 @@ public class AndroidMuxer { } else { long recordTime = System.currentTimeMillis() - mStartRecordTime; if (recordTime > DEFAULT_RECORD_DURATION) { - mMuxer.stop(); - mMuxer.release(); + stopMuxer(); mNumTracks = 0; mStartRecordTime = 0L; @@ -100,11 +102,18 @@ public class AndroidMuxer { public boolean release() { synchronized (mMuxer) { if (++mNumReleases == mNumTracks) { - mMuxer.stop(); - mMuxer.release(); + stopMuxer(); return true; } } return false; } + + public void stopMuxer() { + mMuxer.stop(); + mMuxer.release(); + if (mRecordTime > 0 && mRecordTime < System.currentTimeMillis() && !TextUtils.isEmpty(mCurrentPath)) { + insertToDB(mRecordTime, mCurrentPath); + } + } }