Browse Source

导出视频时支持外部设置 bitrate

jsonwang 3 years ago
parent
commit
b9850bf1ab

+ 3 - 3
BFFramework/Classes/PQGPUImage/akfilters/Tools/PQCompositionExporter.swift

@@ -53,7 +53,7 @@ public class PQCompositionExporter {
 
     }
 
-    public func prepare(videoSize: CGSize) -> Bool {
+    public func prepare(videoSize: CGSize,videoAverageBitRate:Int = 0) -> Bool {
         guard !FileManager.default.fileExists(atPath: exportURL.absoluteString) else {
             return false
         }
@@ -96,11 +96,11 @@ public class PQCompositionExporter {
             print("Couldn't process movie with error: \(error)")
         }
         BFLog(message: "export mShowVidoSize is \(String(describing: input?.mShowVidoSize))")
-
+    
         let videoEncodingSettings: [String: Any] = [
             AVVideoCompressionPropertiesKey: [
                 AVVideoExpectedSourceFrameRateKey: 30,
-                AVVideoAverageBitRateKey: (input?.mShowVidoSize.width ?? 0) * (input?.mShowVidoSize.height ?? 0) * 4,
+                AVVideoAverageBitRateKey: videoAverageBitRate == 0 ? Int(input?.mShowVidoSize.width ?? 0) * Int(input?.mShowVidoSize.height ?? 0) * 2 : videoAverageBitRate,
                 AVVideoProfileLevelKey: AVVideoProfileLevelH264HighAutoLevel,
                 AVVideoH264EntropyModeKey: AVVideoH264EntropyModeCABAC,
             ],

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

@@ -424,7 +424,7 @@ extension PQStuckPointPublicController {
         // 每次初始化的时候设置初始值 为 nIl
         exporter = PQCompositionExporter(asset: inputAsset, videoComposition: nil, audioMix: nil, filters: nil, stickers: mStickers, animationTool: nil, exportURL: outPutMP4URL)
         exporter.showGaussianBlur = true
-        if exporter.prepare(videoSize: CGSize(width: editProjectModel?.sData?.videoMetaData?.videoWidth ?? 0, height: editProjectModel?.sData?.videoMetaData?.videoHeight ?? 0)) {
+        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) {
             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)