IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> xcode ios swift视频压缩使用hevc编码 -> 正文阅读

[移动开发]xcode ios swift视频压缩使用hevc编码

通常苹果的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,
	],
]
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:44:08  更:2022-03-04 15:45:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 17:44:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码