热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

减少使用AVAssetExportSession导出的视频的大小-iOSSwift

如何解决《减少使用AVAssetExportSession导出的视频的大小-iOSSwift》经验,为你挑选了1个好方法。

我目前以以下方式导出视频:

   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 SierraiOS 11才能使用HEVC视频编解码器。但是,如果HEVC由于某种原因而无法使用,请使用H.264较低比特率的常规格式。

AVVideoCodecKey : AVVideoCodecType.h264:

另外,请参阅这篇有关iOS中视频比特率的文章。


首先,非常感谢您的帮助!您的答案将大小从20MB减小到惊人的4MB。我爱你,老兄!您不知道我为此花了多长时间进行研究。- 你是我的英雄。我无法使用HEVC,因此按照您的建议使用了h264。非常感谢!
推荐阅读
author-avatar
邪冫主_70139
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有