Browse Source

修改合成测试代码

harry 3 years ago
parent
commit
4cde07bc7c
1 changed files with 27 additions and 10 deletions
  1. 27 10
      BFRecordScreenKit/Classes/BFVideoCompositionManager.swift

+ 27 - 10
BFRecordScreenKit/Classes/BFVideoCompositionManager.swift

@@ -15,15 +15,32 @@ class BFVideoCompositionManager {
     var itemModels = [BFRecordItemModel]()
     var currItemModelIndex = 0
     
-    var write = GPUImageMovieWriter(movieURL: URL(fileURLWithPath: exportVideosDirectory+"test.mov"), size: UIScreen.main.bounds.size, fileType: "com.apple.quicktime-movie", outputSettings: [
-                AVVideoCodecKey: AVVideoCodecH264,
-                AVVideoWidthKey: 1080,
-                AVVideoHeightKey: 1920,
-                AVVideoCompressionPropertiesKey: [AVVideoAverageBitRateKey: 6*1024*1024 ]
-            ] as [String : Any])
+    var write : GPUImageMovieWriter?
+   
+    func getVideoSize(asset: AVURLAsset) -> CGSize {
+        var size = CGSize.zero
+        asset.tracks.forEach { track in
+            if track.mediaType == .video {
+                let realSize = __CGSizeApplyAffineTransform(track.naturalSize, track.preferredTransform)
+                size = CGSize(width: ceil(abs(realSize.width)), height: ceil(abs(realSize.height)))
+            }
+        }
+
+        return size
+    }
+    
     func export(avsss:AVURLAsset){
         let start = Date()
         saveMovie = GPUImageMovie(asset: avsss)
+        let size = getVideoSize(asset: avsss)
+        
+        write = GPUImageMovieWriter(movieURL: URL(fileURLWithPath: exportVideosDirectory+"test.mov"), size: CGSize(width: 1080, height: 1920), fileType: "com.apple.quicktime-movie", outputSettings: [
+                    AVVideoCodecKey: AVVideoCodecH264,
+                    AVVideoWidthKey: 1080.0,
+                    AVVideoHeightKey: size.height * 1080.0 / size.width ,
+                    AVVideoCompressionPropertiesKey: [AVVideoAverageBitRateKey: 6*1024*1024 ]
+                ] as [String : Any])
+        
         if let saveWrite = write{
             let filter = GPUImageFilter()
             saveMovie.addTarget(filter)
@@ -34,10 +51,10 @@ class BFVideoCompositionManager {
             saveMovie.enableSynchronizedEncoding(using: saveWrite)
             saveMovie.startProcessing()
             saveWrite.startRecording()
-            DispatchQueue.global().asyncAfter(deadline: .now() + 2) { [weak self] in
-                saveWrite.finishRecording()
-                self?.saveMovie.endProcessing()
-            }
+//            DispatchQueue.global().asyncAfter(deadline: .now() + 2) { [weak self] in
+//                saveWrite.finishRecording()
+//                self?.saveMovie.endProcessing()
+//            }
             saveWrite.completionBlock = {[weak self] in
                 BFLog(1, message: "导出完毕:\(Date().timeIntervalSince(start))")
                 self?.mix(date: start, index: 0)