【发布时间】:2018-11-06 17:25:10
【问题描述】:
我目前正在通过以下方式导出视频:
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))
]
【问题讨论】:
-
不是重复的,上下文不同。我在这里使用 AVAssetExportSession。
-
您是否尝试过其他导出预设选项 - 例如
AVAssetExportPresetMediumQuality? -
@EvgenyKarkan 是的,但是质量差到无法接受。
-
@holex "AVAssetExportSession 与默认设置一起使用。" - 感谢您的有毒评论。
-
@dfi 这个问题与这个问题有关:stackoverflow.com/questions/50700076/…
标签: swift avfoundation ios11 avassetexportsession avkit