xcode ios swift视频压缩使用hevc编码

本文详细介绍了在iOS中如何进行视频压缩,特别是如何选择和配置HEVC编码。通过设置AVVideoCodecKey为AVVideoCodecType.hevc,并结合AVVideoProfileLevelKey从VideoToolbox导入相关头文件,确保视频编码支持HDR播放。同时,文章提到了关键参数如AVVideoAverageBitRateKey和AVVideoProfileLevelKey的设置方法,以实现高质量的HEVC压缩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通常苹果的hdr视频都是使用hevc编码的,且支持hevc的播放器一般都支持hdr播放,所以压缩视频的时候选择hevc编码也很合理。

1.压缩的时候需要设置两个属性

AVVideoCodecKey

因为压缩的时候AVVideoCodecKey属性是必须要设置的,点进AVVideoCodecKey的头文件中,描述为:

extension AVVideoCodecType {

    
    @available(iOS 11.0, *)
    public static let hevc: AVVideoCodecType

    @available(iOS 11.0, *)
    public static let h264: AVVideoCodecType /* @"avc1" */

    @available(iOS 11.0, *)
    public static let jpeg: AVVideoCodecType /* @"jpeg" */

    @available(iOS 11.0, *)
    public static let proRes4444: AVVideoCodecType /* @"ap4h" */

    @available(iOS 11.0, *)
    public static let proRes422: AVVideoCodecType /* @"apcn" */

    @available(iOS 13.0, *)
    public static let proRes422HQ: AVVideoCodecType /* @"apch" */

    @available(iOS 13.0, *)
    public static let proRes422LT: AVVideoCodecType /* @"apcs" */

    @available(iOS 13.0, *)
    public static let proRes422Proxy: AVVideoCodecType /* @"apco" */

    
    /* IMPORTANT NOTE: this constant is used to select the appropriate encoder, but is NOT used on the encoded content, which is backwards compatible and hence uses 'hvc1' as its codec type. */
    @available(iOS 13.0, *)
    public static let hevcWithAlpha: AVVideoCodecType /* @"muxa" */
}

直接选择hevc即可

AVVideoProfileLevelKey

并且要同时设置AVVideoProfileLevelKey,点进去只看到H264的Value值,而我们需要的hevc不在里面,但是有段注释

/* HEVC profiles/levels are defined in 
VideoToolbox/VTCompressionProperties.h, e.g. 
kVTProfileLevel_HEVC_Main_AutoLevel. The constants
 defined there can be used as the value for the key 
AVVideoProfileLevelKey. */

意思就是hevc在“VideoToolbox/VTCompressionProperties.h”里面定义的
所以需要在使用hevc编码的时候导入头文件

import VideoToolbox

总结

exportSession.videoSettings = [
	//这里设置编码格式
	AVVideoCodecKey: AVVideoCodecType.hevc,
	//长
	AVVideoWidthKey: targetSize.width,
	//宽
	AVVideoHeightKey: targetSize.height,
	AVVideoCompressionPropertiesKey: [
		//长*宽*三原色
		AVVideoAverageBitRateKey: targetSize.width * targetSize.height * 3,
		//这里要和上面配套设置为hevc,不然会报错,并且需要在代码中引入import VideoToolbox
		AVVideoProfileLevelKey: kVTProfileLevel_HEVC_Main10_AutoLevel,
	],
]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值