Просмотр исходного кода

update: 添加合成指定名字

hwh97 5 лет назад
Родитель
Сommit
b28dd3e1e0

+ 2 - 1
android/src/main/kotlin/cn/i2edu/dubbing_lib/DubbingLibPlugin.kt

@@ -97,7 +97,8 @@ class DubbingLibPlugin : MethodCallHandler {
                                     videoPath = call.argument<String>("videoPath")!!, durationList = call.argument<List<Long>>("durationList")!!,
                                     endTimeList = call.argument<List<Long>>("endTimeList")!!, audioDecodePaths = call.argument<List<String>>("audioDecodePaths")!!,
                                     pathBgmDecodeDir = call.argument<String>("pathBgmDecode")!!, pathBgmRecordSyncDir = call.argument<String>("pathBgmRecordSync")!!,
-                                    pathBgmRecordDecodeSyncDir = call.argument<String>("pathBgmRecordDecodeSync")!!, pathVideoMixinDir = call.argument<String>("pathVideoMixin")!!)
+                                    pathBgmRecordDecodeSyncDir = call.argument<String>("pathBgmRecordDecodeSync")!!, pathVideoMixinDir = call.argument<String>("pathVideoMixin")!!,
+                                    mixinName = call.argument<String>("mixinName")!!)
                             .setComposeCallBack(
                                     object : MixinVideoCallBack {
                                         override fun onResult(resultPath: String) {

+ 6 - 3
android/src/main/kotlin/cn/i2edu/dubbing_lib/util/MixinVideoUtil.kt

@@ -34,6 +34,7 @@ class MixinVideoUtil private constructor(private val context: Context) : MixinHa
     private lateinit var decodeAsyncBgmPath: String
     private lateinit var encodeAudioWithBgmPath: String
     private lateinit var mixVideoPath: String
+    private lateinit var mixinName: String
 
     private var mixinVideoCallBack: MixinVideoCallBack? = null
     private val pausableThreadPool: PausableThreadPool = PausableThreadPool(1)
@@ -53,7 +54,7 @@ class MixinVideoUtil private constructor(private val context: Context) : MixinHa
 
     fun initParams(
             videoId: String, bgmPath: String, videoPath: String, durationList: List<Long>, endTimeList: List<Long>, audioDecodePaths: List<String>,
-            pathBgmDecodeDir: String, pathBgmRecordSyncDir: String, pathBgmRecordDecodeSyncDir: String, pathVideoMixinDir: String
+            pathBgmDecodeDir: String, pathBgmRecordSyncDir: String, pathBgmRecordDecodeSyncDir: String, pathVideoMixinDir: String, mixinName: String
     ): MixinVideoUtil {
         this.videoId = videoId
         this.bgmPath = bgmPath
@@ -65,6 +66,7 @@ class MixinVideoUtil private constructor(private val context: Context) : MixinHa
         this.pathBgmRecordSyncDir = pathBgmRecordSyncDir
         this.pathBgmRecordDecodeSyncDir = pathBgmRecordDecodeSyncDir
         this.pathVideoMixinDir = pathVideoMixinDir
+        this.mixinName = mixinName
         return instance!!
     }
 
@@ -150,7 +152,8 @@ class MixinVideoUtil private constructor(private val context: Context) : MixinHa
             val videoAudioMixer = VideoAudioMixer(context)
             videoAudioMixer.setListener(object : VideoAudioMixer.VideoAudioMixListener {
                 override fun mixSuccess() {
-                    mixVideoPath = pathVideoMixinDir + "${videoId}_mix.mp4"
+//                    mixVideoPath = pathVideoMixinDir + "${videoId}_${System.currentTimeMillis()}.mp4"
+                    mixVideoPath = pathVideoMixinDir + mixinName
                     val msg = Message()
                     msg.what = HandlerMessage.AUDIO_MIX_VIDIO_FINISHED.value
                     mixinHandler.sendMessage(msg)
@@ -161,7 +164,7 @@ class MixinVideoUtil private constructor(private val context: Context) : MixinHa
                 }
             })
             videoAudioMixer.mux(encodeAudioWithBgmPath, videoPath,
-                    "${videoId}_mix.mp4", pathVideoMixinDir)
+                    mixinName, pathVideoMixinDir)
         }
     }
 

+ 1 - 1
ios/Classes/SwiftDubbingLibPlugin.swift

@@ -63,7 +63,7 @@ public class SwiftDubbingLibPlugin: NSObject, FlutterPlugin {
             let audioPathList = args!["audioDecodePaths"] as! [String];
             let startTimeList = args!["startTimeList"] as! [Double];
             let pathVideoMixinDir = args!["pathVideoMixin"] as! String;
-            let outPath = pathVideoMixinDir + "\(videoId)_mix.mp4";
+            let outPath = pathVideoMixinDir + args!["mixinName"] as! String;
             startMixinAudio(videoPath: videoPath, bgmPath: bgmPath, audioPathList: audioPathList, startTimeList: startTimeList, outPath: outPath, result: result)
             break
         case "startMixinPaintedAudio":

+ 3 - 2
lib/dubbing_lib.dart

@@ -73,7 +73,7 @@ class DubbingLib {
       List<int> endTimeList,
       List<String> decodeAudioPathList,
       List<int> durationList, String localVideoPath,
-      List<double> startTimeList) {
+      List<double> startTimeList, String mixinName) {
     return _channel.invokeMethod(
         "startMixinAudio", {
       "videoId": videoId,
@@ -87,7 +87,8 @@ class DubbingLib {
       "pathBgmRecordSync": audioSyncPath,
       "pathBgmRecordDecodeSync": audioSyncDecodePath,
       "pathVideoMixin": videoMixInPath,
-      "startTimeList": startTimeList
+      "startTimeList": startTimeList,
+      "mixinName": mixinName
     });
   }