以服务于中国广大创业者为己任,立志于做最好的创业网站。

标签云创业博客联系我们

导航菜单

企业抖音运营自学全套教程免费,抖音上传视频自动转码是什么

  

  一.了解VideoToolBox 硬编码   

  

  在iOS4.0中,苹果已经支持硬编解码器。然而,硬编解码器在当时是一个专有的应用编程接口。它没有提供给开发者。   

  

  在2014年的WWDC会议上,在iOS8.0之后,苹果开启了硬编码和解码的API。   

  

     

  

  是可视工具箱框架的应用编程接口.可视工具箱是一套纯C语言的API。它包含许多C语言函数。框架是基于核心的。   

  

  基础库函数,基于C语言   

  

  VideoToolBox其实属于底层框架,可以直接访问硬件编码器和解码器。它存在于视频压缩和解压缩中,为存储在像素缓冲区中的数据转换提供服务。   

  

  硬编码的优点   

  

  *提高编码性能(CPU使用率大幅降低,首选GPU)   

  

  *提高编码效率(缩短帧编码时间)   

  

  *延长用电时间(大大降低耗电量)   

  

  这个框架也经常用于音频和视频项目的开发。如果你有从事音视频开发的想法,那么这个框架将是你学习的一个重点。   

  

  VideoToolBox框架的流程   

  

  *创建会话   

  

  *设置编码相关参数   

  

  *开始编码   

  

  *循环采集收集的数据。   

  

  *获取编码数据   

  

  *将数据写入H264文件   

  

  1.1 编码的输入和输出   

  

  在我们开始编码之前,我们需要知道用于编码和解码的可视工具箱的输入和输出是什么?   

  

  只有了解了这一点,我们才能清楚地知道如何向可视工具箱添加数据,以及如何获取数据。   

  

     

  

  如图,左边的三个视频帧是发送到编码器之前的数据,开发者必须将原始图像数据封装到CVPixelBuufer的数据结构中,这是使用VideoToolBox的核心   

  

  CVPixelBuffer分析   

  

  在这份官方文件的介绍中,CVPixelBuffer给出的官方解释是,它的主存将所有像素数据作为一个对象进行存储。那么什么是主存呢?   

  

  其实并不是我们通常操作的内存,它意味着内存区域存在于缓存中。在访问这个内存区域之前,我们需要锁定这个内存区域。   

  

     

  

  从它的用法,我们可以知道这个内存区域不是一个普通的内存区域。它需要锁定和解锁等一系列操作。   

  

  作为视频开发,应该尽量减少视频内存和内存的交换。因此,在作为视频开发,尽量减少进行显存和内存的交换.所以在iOS,的发展过程中,应该尽量减少对其存储区域的访问。建议使用iOS平台提供的相应API完成一系列相应的操作。   

  

  在AVFoundation   

  

  在回调方法中,它提供给我们的数据实际上是CVPixelBuffer,只不过当时使用的是引用类型CVImageBufferRef,这实际上是CVPixelBuffer的另一种定义。   

  

  摄像机返回的CVImageBuffer   

  

  存储在中的数据是CVPixelBuffer,而存储在由可视工具箱编码的CMSampleBuffer中的数据是CMBlockBuffer的引用。   

  

     

  

  在iOS   

  

  经常使用会话。比如我们在使用任何硬件设备时,都需要使用相应的会话,麦克风需要使用AudioSession,摄像头需要使用AVCaptureSession,编码需要使用VTCompressionSession。解码时,我们需要使用VTDecompressionSessionRef。