http://blog.csdn.net/shawnkong/article/details/52045894…
文/落影loyinglin(简书作者)原文链接:http://www.jianshu.com/p/37784e363b8a著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. =========================================== 使用VideoToolbox硬编码H.264 前言 H.264是目前很流行的编码层视频压缩格式,目前项目中的协议层有rtmp与http,但是视频的编码层都是使用的H.264.在熟悉H.264的过程中,为更好的了解H.264,尝…
最近接触了一些视频流H264的编解码知识,之前项目使用的是FFMpeg多媒体库,利用CPU做视频的编码和解码,俗称为软编软解.该方法比较通用,但是占用CPU资源,编解码效率不高.一般系统都会提供GPU或者专用处理器来对视频流进行编解码,也就是硬件编码和解码,简称为硬编解码.苹果在iOS 8.0系统之前,没有开放系统的硬件编码解码功能,不过Mac OS系统一直有,被称为Video ToolBox的框架来处理硬件的编码和解码,终于在iOS 8.0后,苹果将该框架引入iOS系统. 由此,开发者便可以在…
使用 AVCaptureSession进行实时采集音视频(YUV.),编码 通过AVCaptureVideoDataOutputSampleBufferDelegate获取到音视频buffer- 数据 分别对音视频原始数据进行编码 传输 ViewController // // ViewController.h // H264AACEncode // // Created by ZhangWen on 15/10/14. // Copyright © 2015年 Zhangwen. All ri…
iOS视频硬编码技术 一.iOS视频采集硬编码 基本原理 硬编码 & 软编码 硬编码:通过系统自带的Camera录制视频,实际上调用的是底层的高清编码硬件模块,即显卡,不使用CPU,速度快 软编码:使用CPU进行编码,如常见C/C++代码,编译生成二进制文件,速度相对较慢.例如使用Android NDK编译H264生成so库,编写jni接口,再使用java调用so库. 硬编码过程和原理 过程:通过MediaRecoder采集视频,再将视频流映射到LocalSocket实现收发. 视频采集步骤 主…
问题:在视频采集后,通过Mediacodec编码生成h264视频文件,播放时出现马赛克较多,无论调整帧率.码率.还是分辨率都不能解决问题 出现问题的原因:编码时传入的时间戳不对.时间戳是视频播放的标准,应该以采集一帧画面时的时间为准,而不应该是编码时的时间,所以编码时传入的时间戳可以使用采集该帧数据时的时间. 关于网上用固定步长增加的变量作为时间戳的方式,个人认为不是很准确. 个人认为比较准确的方法就是在获取摄像头采集到的原始数据之后,可以通过long stamptime = System.na…
一.需求 直播助手在录屏过程中,产品要求跟随用户手机屏幕旋转,录屏的视频跟随旋转 二.实施方案 目前触手录,iTools PC端均已经实现该功能,并且该功能只适配iOS9和iOS10系统.猜测实现方案有两种方式: 1.Airplay协议升级,支持在用户旋转之后,系统发送过来的H264数据已经旋转,可能性比较小 2.系统发送过来的H264数据需要解码,然后手动根据屏幕方向,进行旋转.   1方式实施时间较长,暂时按照方案2来实施.2方案中需要感知用户屏幕的方向,注意这里的方向是渲染的朝向而不是重力…
本文档为iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):1 概述续篇,主要描述: CMSampleBufferRef读取实际数据 序列参数集(Sequence Parameter Set, SPS) 图像序列参数(Picture Parameter Set, PPS) 等内容. 1.视频实际内容数据持久化 1.1.可攻可受的CMSampleBufferRef 文档1 概述中回调函数 static void compressionOutputCallback(  …
硬编码相对于软编码来说,使用非CPU进行编码,如显卡GPU.专用的DSP.FPGA.ASIC芯片等,性能高,对CPU没有压力,但是对其他硬件要求较高(如GPU等). 在iOS8之后,苹果开放了接口,并且封装了VideoToolBox&AudioToolbox两个框架,分别用于对视频&音频进行硬编码,音频编码放在后面做总结,这次主要总结VideoToolBox. Demo的Github地址:https://github.com/wzpziyi1/HardCoding-For-iOS 1.相关…
本文档尝试用Video Toolbox进行H.265(HEVC)硬件编码,视频源为iPhone后置摄像头.去年做完硬解H.264,没做编码,技能上感觉有些缺失.正好刚才发现CMFormatDescription.h中enum : CMVideoCodecType提供了kCMVideoCodecType_HEVC枚举值.所以呢,作死试试 iOS 9.2 硬编HEVC. 结论:不支持开发者使用H.265(HEVC),可以用H.264(AVC). 1.读取iPhone后置摄像头 提示:iPhone不支…