首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
最简单的iOS直播推流
订阅
逸尘酱23834
更多收藏集
微信扫码分享
微信
新浪微博
QQ
11篇文章 · 0订阅
1小时学会:最简单的iOS直播推流(一)介绍
最近在做iOS直播,研究了相关直播技术,主要包含两方面:推流,播放。 因为之前使用cocos2dx做过一个视频游戏(恋爱公寓),用ffmpeg+sdl+cocos2dx实现过视频播放器。 游戏中的视频是hevc(h265)+aac合成mp4文件,使用aes加密。视频播放的时候,…
简单的iOS直播推流——flv 编码与音视频时间戳同步
rtmp最初是Adobe Flash用于音视频播放的一个实时传输协议。而flv正是Adobe推出的一个视频格式,因此rtmp协议支持flv视频流。 这里可以我们把获取的aac/h264的数据,直接转成flv格式的视频帧,然后按照时间戳依次发送给服务端即可。 flv总体来说是一个…
1小时学会:最简单的iOS直播推流(八)h264 aac 软编码
另外无论软编码还是硬编码,最后获得的flv格式数据,需要通过rtmp协议发送至服务器。 本篇将介绍第1部分内容。另外两部分内容将在后续文章中介绍。 根据上文介绍,软编码实现,对应音频/视频编码分别为:AWSWFaacEncoder 和 AWSWX264Encoder。 这两个类…
1小时学会:最简单的iOS直播推流(四)如何使用GPUImage,如何美颜
上一篇文章介绍了如何使用系统方法捕获视频数据,但是更多的时候,为了使用美颜滤镜,我们会选择GPUImage来获取视频数据。 GPUImage是一个可以为录制视频添加实时滤镜的一个著名第三方库。 该框架大概原理是,使用OpenGL着色器对视频图像进行颜色处理,然后存到frameB…
1小时学会:最简单的iOS直播推流(三)使用系统接口捕获音视频数据
通过系统相机录制视频获取音视频数据,是推流的第一步。 源码中提供2种获取音视频数据的方法:一是使用系统自带接口;二是使用GPUImage。 本篇首先介绍第一种。 网络上关于获取视频数据的代码有不少,但是为了方便代码阅读,这里简要介绍一下。 整套推流代码的入口:AWAVCaptu…
1小时学会:最简单的iOS直播推流(二)代码架构概述
通过系统相机捕获视频及声音,该美颜的美颜,该滤镜的滤镜。 捕获的视频帧为yuv格式,音频帧为pcm格式。 将捕获的音视频数据,传入一个串行队列(编码队列),在队列中进行编码操作。 将yuv格式视频数据,转成h264格式视频帧;将pcm格式音频数据,转成aac格式音频帧。 将转好…
1小时学会:最简单的iOS直播推流(五)yuv、pcm数据的介绍和获取
前面介绍了如何通过相机实时获取音视频数据。 我们接下来就需要了解获取到的数据到底是什么样的。 使用系统提供的接口获取到的音视频数据都保存在CMSampleBufferRef中。 使用GPUImamge获取到的音频数据为CMSampleBufferRef,获取到的视频格式为BGR…
1小时学会:最简单的iOS直播推流(十一)sps&pps和AudioSpecificConfig介绍(完结)
前文中已经多次提到过sps&pps/AudioSpecificConfig。 sps&pps是h264中的概念,它包含了一些编码信息,如profile,图像尺寸等信息。在flv中,包含sps&pps的部分被称为 AVC Sequence header(即AVCDecoderCo…
1小时学会:最简单的iOS直播推流(十)librtmp使用介绍
rtmp(一般大写,小写会被认为英文不好或不专业,iOS开发者对这一点更为敏感)协议是Adobe公司为Flash视频的实时传输开发的一个开放协议。 本文不探究rtmp协议的原理,只是从代码角度来看,客户端如何使用librtmp完成推流功能。 项目内使用的librtmp是使用rt…
1小时学会:最简单的iOS直播推流(七)h264/aac 硬编码
前面已经介绍了如何从硬件设备获取到音视频数据(pcm,NV12)。 但是我们需要的视频格式是 aac和 h264。 现在就介绍一下如何将pcm编码aac,将NV12数据编码为h264。 编码分为软编码和硬编码。 硬编码是系统提供的,由系统专门嵌入的硬件设备处理音视频编码,主要计…