在iPhone12发布后,支持使用Dolby Vision来录制HDR视频。至此,升级到iOS14.1系统后,已经支持录制、播放、编辑和导出HDR视频。接下来,让我们一起探索HDR视频的各种操作。
一、HDR视频边编辑边预览
1、Profile与Level
HDR视频中,Dolby Vision的Profile档次是8,同时兼容HLG格式。关于Dolby Vision的完整档次如下表所示:
默认的Dolby Vision是8.4,其中4代表Level等级,对应是1920x1080@30。完整的等级如下表所示:
2、编码器类型
编码器类型是HEVC,位深是10bit(HDR+对应的是12bit),像素格式为420YpCbCr10BiPlanarVideoRange 。
3、自定义Composition
我们可以使用AVVideoComposition来编辑HDR视频,也可以自定义Composition。其中,需要设置supportsHDRSourceFrames=true,supportsWideColorSourceFrames=true。具体代码如下:
4、传递函数
在Video Composition中,我们需要设置colorPrimaries、colorTransferFunction、colorYCbCrMatrix。对应如下:
videoComposition.colorPrimaries = AVVideoColorPrimaries_ITU_R_2020
videoComposition.colorYCbCrMatrix = AVVideoYCbCrMatrix_ITU_R_2020
videoComposition.colorTransferFunction = AVVideoTransferFunction_ITU_R_2100_HLG
5、预览播放
在AVPlayer中,使用eligibleForHDRPlayback()判断是否支持HDR播放。
二、HDR视频导出
我们有两种方法导出HDR视频,第一种用AVAssetExportSession,第二种用AVAssetWriter。
1、AVAssetExportSession
从Asset读入视频,经过AVVideoComposition处理,使用AVAssetExportSession导出HDR视频,同时支持用AVPlayer来播放预览。示意图如下:
2、AVAssetWriter
如果不需要预览视频,可以直接用AVAssetWriter来导出HDR视频。来源可以是Asset,也可以是AVCaptureVideoDataOutput。示意图如下:
三、HDR转SDR
HDR转SDR需要tonemapping色调映射,同时把10bit转为8bit,一般是BT.2020转为BT.709。有多种方式进行转换,具体如下:
1、AVVideoComposition
使用AVVideoComposition对应的配置代码如下:
videoComposition.colorPrimaries = AVVideoColorPrimaries_ITU_R_709_2
videoComposition.colorYCbCrMatrix = AVVideoYCbCrMatrix_ITU_R_709_2
videoComposition.colorTransferFunction = AVVideoTransferFunction_ITU_R_709_2
2、AVAssetWriter
使用AVAssetWriter对应的配置代码如下:
videoOutputSettings[AVVideoColorPropertiesKey]
= [AVVideoColorPrimariesKey:
AVVideoColorPrimaries_ITU_R_709_2,
AVVideoTransferFunctionKey:
AVVideoTransferFunction_ITU_R_709_2,
AVVideoYCbCrMatrixKey:
AVVideoYCbCrMatrix_ITU_R_709_2]
3、VTDecompressionSession
如果直接用VTDecompressionSession来解码,对应代码如下:
let pixelTransferProperties
= [kVTPixelTransferPropertyKey_DestinationColorPrimaries:
kCVImageBufferColorPrimaries_ITU_R_709_2,
kVTPixelTransferPropertyKey_DestinationTransferFunction:
kCVImageBufferTransferFunction_ITU_R_709_2,
kVTPixelTransferPropertyKey_DestinationYCbCrMatrix:
kCVImageBufferYCbCrMatrix_ITU_R_709_2]
4、AVPlayerItemVideoOutput
如果使用AVPlayer来播放,可以用AVPlayerItemVideoOutput来配置相关属性 :
let attributes
= [kCVImageBufferYCbCrMatrixKey:
CVImageBufferYCbCrMatrix_ITU_R_709_2,
kCVImageBufferColorPrimariesKey:
kCVImageBufferColorPrimaries_ITU_R_709_2,
kCVImageBufferTransferFunctionKey:
kCVImageBufferTransferFunction_ITU_R_709_2]
let videoOutput = AVPlayerItemVideoOutput(pixelBufferAttributes:
attributes as [String: Any])
参考链接:
Edit and play back HDR video with AVFoundation
Export HDR media in your app with AVFoundation文章来源:https://www.toymoban.com/news/detail-444356.html
Incorporating HDR video with Dolby Vision文章来源地址https://www.toymoban.com/news/detail-444356.html
到了这里,关于iOS播放与编辑HDR视频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!