作者:邪冫主_70139 | 来源:互联网 | 2022-12-15 19:55
我目前以以下方式导出视频:
let exporter = AVAssetExportSession.init(asset: mixComposition, presetName: AVAssetExportPreset1280x720)
exporter?.outputURL = outputPath
exporter?.outputFileType = AVFileType.mp4
exporter?.shouldOptimizeForNetworkUse = true
exporter?.videoComposition = mainCompositionInst
15秒的视频消耗约20MB的数据。与Snapchat的2MB视频相比,这个数字似乎是完全不能接受的。
我已经降低了导出和捕获会话的质量(1280x720)。
该视频在自定义相机上拍摄。UIImagePickerController
未使用。
AVAssetExportSession与默认设置一起使用。
有什么办法可以减小视频尺寸?非常感谢!
编辑1:
我尝试使用此库:https : //cocoapods.org/pods/NextLevelSessionExporter
不幸的是,这会造成尺寸问题,并删除了我的音频:
// Creating exporter
let exporter = NextLevelSessionExporter(withAsset: mixComposition)
exporter.outputURL = outputPath
exporter.outputFileType = AVFileType.mp4
exporter.videoComposition = mainCompositionInst
let compressionDict: [String: Any] = [
AVVideoAverageBitRateKey: NSNumber(integerLiteral: 2500000),
AVVideoProfileLevelKey: AVVideoProfileLevelH264BaselineAutoLevel as String,
]
exporter.videoOutputCOnfiguration= [
AVVideoCodecKey: AVVideoCodecType.h264,
AVVideoWidthKey: NSNumber(integerLiteral: 1280),
AVVideoHeightKey: NSNumber(integerLiteral: 720),
AVVideoScalingModeKey: AVVideoScalingModeResizeAspectFill,
AVVideoCompressionPropertiesKey: compressionDict
]
exporter.audioOutputCOnfiguration= [
AVFormatIDKey: kAudioFormatMPEG4AAC,
AVEncoderBitRateKey: NSNumber(integerLiteral: 128000),
AVNumberOfChannelsKey: NSNumber(integerLiteral: 2),
AVSampleRateKey: NSNumber(value: Float(44100))
]
1> ARGeo..:
要减少文件大小,请尝试使用以下属性来设置HEVC
编解码器(使用cocoa pod NextLevelSessionExporter
):
let compressionDict: [String: Any] = [
AVVideoAverageBitRateKey: NSNumber(integerLiteral: 2500000), //lower it if you wish
AVVideoProfileLevelKey: AVVideoProfileLevelH264BaselineAutoLevel as String,
]
exporter.videoOutputCOnfiguration= [
AVVideoCodecKey : AVVideoCodecType.hevc,
AVVideoWidthKey : NSNumber(integerLiteral: 1280),
AVVideoHeightKey: NSNumber(integerLiteral: 720),
AVVideoScalingModeKey: AVVideoScalingModeResizeAspectFill,
AVVideoCompressionPropertiesKey: compressionDict
]
您需要升级到macOS High Sierra
和iOS 11
才能使用HEVC
视频编解码器。但是,如果HEVC
由于某种原因而无法使用,请使用H.264
较低比特率的常规格式。
AVVideoCodecKey : AVVideoCodecType.h264:
另外,请参阅这篇有关iOS中视频比特率的文章。
首先,非常感谢您的帮助!您的答案将大小从20MB减小到惊人的4MB。我爱你,老兄!您不知道我为此花了多长时间进行研究。- 你是我的英雄。我无法使用HEVC,因此按照您的建议使用了h264。非常感谢!