소스 검색

修改设置码率方法

jsonwang 3 년 전
부모
커밋
465009f64b
1개의 변경된 파일16개의 추가작업 그리고 1개의 파일을 삭제
  1. 16 1
      BFFramework/Classes/Stuckpoint/Controller/PQStuckPointPublicController.swift

+ 16 - 1
BFFramework/Classes/Stuckpoint/Controller/PQStuckPointPublicController.swift

@@ -423,8 +423,23 @@ extension PQStuckPointPublicController {
         let inputAsset = AVURLAsset(url: URL(fileURLWithPath: documensDirectory + (audioMixModel?.localPath ?? "")), options: nil)
         // 每次初始化的时候设置初始值 为 nIl
         exporter = PQCompositionExporter(asset: inputAsset, videoComposition: nil, audioMix: nil, filters: nil, stickers: mStickers, animationTool: nil, exportURL: outPutMP4URL)
+        
+        var orgeBitRate = (editProjectModel?.sData?.videoMetaData?.videoWidth ?? 0) * (editProjectModel?.sData?.videoMetaData?.videoHeight ?? 0) * 3
+ 
+        for stick in mStickers!{
+            if(stick.type == StickerType.VIDEO.rawValue){
+                let asset = AVURLAsset(url: URL(fileURLWithPath:  documensDirectory + stick.locationPath), options: avAssertOptions)
+           
+                let cbr = asset.tracks(withMediaType: .video).first?.estimatedDataRate
+                if(Int(cbr ?? 0) > orgeBitRate){
+                    orgeBitRate = Int(cbr ?? 0)
+                }
+            
+            }
+        }
+        BFLog(message: "导出设置的码率为:\(orgeBitRate)")
         exporter.showGaussianBlur = true
-        if exporter.prepare(videoSize: CGSize(width: editProjectModel?.sData?.videoMetaData?.videoWidth ?? 0, height: editProjectModel?.sData?.videoMetaData?.videoHeight ?? 0),videoAverageBitRate:  (editProjectModel?.sData?.videoMetaData?.videoWidth ?? 0) * (editProjectModel?.sData?.videoMetaData?.videoHeight ?? 0) * 4) {
+        if exporter.prepare(videoSize: CGSize(width: editProjectModel?.sData?.videoMetaData?.videoWidth ?? 0, height: editProjectModel?.sData?.videoMetaData?.videoHeight ?? 0),videoAverageBitRate: orgeBitRate) {
             let playeTimeRange: CMTimeRange = CMTimeRange(start: CMTime(value: CMTimeValue(Int((audioMixModel?.startTime ?? 0) * 600)), timescale: 600), end: CMTime(value: CMTimeValue(Int((audioMixModel?.endTime ?? 0) * 600)), timescale: 600))
             BFLog(message: "开始导出 \(String(describing: audioMixModel?.startTime)) 结束 \(String(describing: audioMixModel?.endTime))")
             exporter.start(playeTimeRange: playeTimeRange)