移动端直播应用的开发流程
来源:互联网 发布:动感相册制作软件 编辑:程序博客网 时间:2024/06/06 03:14
(一)推流端
推流,就是将采集到的音频,视频数据通过流媒体协议发送到流媒体服务器。
一、选择流媒体协议
现在直播应用,采用RTMP协议居多,也有部分使用HLS协议。
采用RTMP协议,就要看下它与流媒体服务器交互的过程,RTMP协议的默认端口是1935,采用TCP协议。并且需要了解FLV的封装格式。
采用HLS协议,因为涉及到切片,延时会比较大,需要了解TS流。
二、采集音视频数据
做直播,数据的来源不可缺少,就是采集摄像头,麦克风的数据。
iOS平台上采集音视频数据,需要使用AVFoundation.Framework框架,从captureSession会话的回调中获取音频,视频数据。
三、硬编码,软编码音视频数据
软编码就是利用CPU资源来压缩音视频数据,硬编码与之相反。
软编码的话,现在广泛采用FFmpeg库结合编码库来实现,FFmpeg+X624来编码视频数据YUV/RGB输出H264数据,
FFmpeg+fdk_aac来编码音频数据PCM输出AAC数据。
四、根据所选流媒体协议封包音视频数据
将音频,视频打包成packet。
五、与服务器交互发送封包数据
根据所选流媒体协议,发送相应指令连接服务器,连接服务器成功后,就可以发送packet数据了。
(二) 拉流端
拉流,就是从流媒体服务器获取音频,视频数据。
一、解析协议
播放器端根据URL解析所用的流媒体协议(RTMP,HLS)。
二、解封装
解封装,就是demux的过程,从容器格式(FLV,TS)中,分离出音视频数据。
三、解码
解码,就是把获取到的数据解压缩,恢复成原始数据。解码就是将H264变成YUV,AAC变成PCM。
解码可以使用软解码,硬解码。
软解码就是利用CPU资源去解压缩数据,采用的方式是FFmpeg解码。
硬解码,对于iOS平台来说,可以使用VideoToolbox.Framework(该框架只能在iOS 8.0及以上系统使用)
硬解码视频数据。Android平台上,可以使用MediaCodec来硬解码视频数据。
四、渲染数据
采用OpenGL渲染YUV数据,呈现视频画面。将PCM送入设备的硬件资源播放,产生声音。
iOS播放流式音频,使用Audio Queue 的方式,即,利用AudioToolbox.Framework 框架。
原文链接:http://www.jianshu.com/p/a51bb70d6e4d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
- 移动端直播应用的开发流程
- 移动端直播的几种方案
- ios移动端直播
- 移动端直播音视频功能的开发--简介
- 几个移动端直播SDK开源地址
- 直播这么火你做过了么!?!移动端HTML5 video标签 以及支持PC端直播
- 移动应用开发原型模板及开发流程
- PC和移动的轮播图片开发
- 智能卡应用的开发流程
- BREW 应用的开发流程
- 智能卡应用的开发流程
- 移动端开发流程
- 【直播系列之二】快速接入PC端直播功能
- 组播的应用
- 组播发送的流程
- 爱图腾技术副总黄之豪:从需求到交付——优化你的移动应用开发流程
- 移动应用设计基本流程
- 移动应用/APP的测试流程及方法
- 隧道协议
- js获取url传递参数,js获取url?号后面的参数window.location
- C++调用C#的DLL详解
- Linux 基础命令 文件查找
- UVA 750 八皇后·(2)+ 预处理+递归+棋盘问题
- 移动端直播应用的开发流程
- Protocol Buffer技术详解(3)-数据编码
- CentOS 6.4下编译安装MySQL 5.6.14
- PPTP
- osgPhysX编译错误:Debug Assertion Failed _pFirstBlock == pHead
- flume通过tcp/udp采集数据并存到kafka配置及操作方式
- 图解SSL/TLS协议
- C++中单例对象的内存自动释放
- MySQL:日期函数、时间函数总结