1小时学会:最简单的iOS直播推流(一)介绍

最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同窗快来看!!android

源代码:https://github.com/hardman/AWLivegit

介绍

最近在作iOS直播,研究了相关直播技术,主要包含两方面:推流,播放。github

由于以前使用cocos2dx作过一个视频游戏(恋爱公寓),用ffmpeg+sdl+cocos2dx实现过视频播放器。架构

游戏中的视频是hevc(h265)+aac合成mp4文件,使用aes加密。视频播放的时候,须要使用ffmpeg中的crypt模块进行aes解密后播放视频,解析出来的yuv图片数据直接送给OpenGL显示。app

因此此次主要研究推流技术。并将代码开源ide

其实直播技术中不论播放仍是推流,更多的应该算是技术整合,就是将前人作好的协议和实现,整合成咱们本身想要的功能。函数

而此次作这个项目也并非作了什么技术创新,github里面已经有着不少直播源代码,可能比我写的更好更完整。而个人代码,特色就是简单直接,直奔主题。post

我会在个人博客里作一些简单的解析,目的是但愿让更多的人了解直播技术,可以了解直播内部的一些简单的原理,再也不知其然不知其因此然。编码

功能范围

  • 视频捕获:系统方法捕获,GPUImage捕获,CMSampleRef解析
  • 美颜滤镜:GPUImage,
  • 视频变换:libyuv
  • 软编码:faac,x264
  • 硬编码:VideoToolbox(aac/h264)
  • libaw:C语言函数库
  • flv协议及编码
  • 推流协议:librtmp,rtmp重连,rtmp各类状态回调

代码使用及注意

代码使用方法见Demo。后续会根据上述功能的每一点对源代码进行解析。加密

若是有什么疑问或者问题,请评论指出。但愿可以给愿意了解直播技术的人抛出一块好砖。

注1:项目中全部相关的文件名,类名,全局变量,全局方法都会加AW/aw做为前缀。

注2:项目中关键代码都使用c语言编写,理论上能够很容易地移植到android中。

文章列表

  1. 1小时学会:最简单的iOS直播推流(一)项目介绍
  2. 1小时学会:最简单的iOS直播推流(二)代码架构概述
  3. 1小时学会:最简单的iOS直播推流(三)使用系统接口捕获音视频
  4. 1小时学会:最简单的iOS直播推流(四)如何使用GPUImage,如何美颜
  5. 1小时学会:最简单的iOS直播推流(五)yuv、pcm数据的介绍和获取
  6. 1小时学会:最简单的iOS直播推流(六)h26四、aac、flv介绍
  7. 1小时学会:最简单的iOS直播推流(七)h264/aac 硬编码
  8. 1小时学会:最简单的iOS直播推流(八)h264/aac 软编码
  9. 1小时学会:最简单的iOS直播推流(九)flv 编码与音视频时间戳同步
  10. 1小时学会:最简单的iOS直播推流(十)librtmp使用介绍
  11. 1小时学会:最简单的iOS直播推流(十一)sps&pps和AudioSpecificConfig介绍(完结)
相关文章
相关标签/搜索