移动端直播音视频功能的开发--简介
2016-06-07 16:14
561 查看
今年的直播非常火,因此也够机会大展身手,开发直播sdk,简单介绍一下我的整个技术方向点:
一、整体的流程可以分为简单的三大块:
1、直播推流端
2、直播服务端
3、直播接收端
二、主要介绍下直播推流端的技术方向
1、音视频采集:需要结合平台接口实现,采集后的裸数据进行统一格式(主要针对采集图像参数的合理设置)
android一般采用NV21格式
ios采用NV12或者RGB格式
当然如果做滤镜实现美颜效果,最终可以通过GPU转为YUV420P或者RGB直接输出
2、音视频编码:音频采用aac编码,视频采用h264编码;移动端性能问题尤为重要,因此,硬编码为首选,也是最重要的一环
编码尤为重要的是对解码信息的生成,不管音频还是视频,都需要将其发送给对端,否则会出现解码失败的情况
另一个是时间戳的问题,大部分卡顿、延时、图像或者声音播放不正常的情况都是和时间戳是否正确有关
3、音视频传输:目前主流的直播多采用rtmp协议,在可靠传输条件下延时可控;可以参考librtmp或者ffmpeg的实现,当然他们是阻塞的;
rtmp这块需要好好阅读文档,加强理解,关键点在于如何封包以及对于出现网络问题的处理
总结:上面讲的都是简介,不会很深入,因为要深入讲解估计得分很多章节才能讲清楚,但是最重要的一点架构一定要考虑足够周到。
(我已经重构了两次,浪费了很多宝贵时间,如果不重构,很多问题只能卡在哪里会浪费更多时间)
欢迎加入
WebRtc开发社区 323038420
一、整体的流程可以分为简单的三大块:
1、直播推流端
2、直播服务端
3、直播接收端
二、主要介绍下直播推流端的技术方向
1、音视频采集:需要结合平台接口实现,采集后的裸数据进行统一格式(主要针对采集图像参数的合理设置)
android一般采用NV21格式
ios采用NV12或者RGB格式
当然如果做滤镜实现美颜效果,最终可以通过GPU转为YUV420P或者RGB直接输出
2、音视频编码:音频采用aac编码,视频采用h264编码;移动端性能问题尤为重要,因此,硬编码为首选,也是最重要的一环
编码尤为重要的是对解码信息的生成,不管音频还是视频,都需要将其发送给对端,否则会出现解码失败的情况
另一个是时间戳的问题,大部分卡顿、延时、图像或者声音播放不正常的情况都是和时间戳是否正确有关
3、音视频传输:目前主流的直播多采用rtmp协议,在可靠传输条件下延时可控;可以参考librtmp或者ffmpeg的实现,当然他们是阻塞的;
rtmp这块需要好好阅读文档,加强理解,关键点在于如何封包以及对于出现网络问题的处理
总结:上面讲的都是简介,不会很深入,因为要深入讲解估计得分很多章节才能讲清楚,但是最重要的一点架构一定要考虑足够周到。
(我已经重构了两次,浪费了很多宝贵时间,如果不重构,很多问题只能卡在哪里会浪费更多时间)
欢迎加入
WebRtc开发社区 323038420
相关文章推荐
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- Managed Media Aggregation using Rtsp and Rtp
- [总结]FFMPEG视音频编解码零基础学习方法
- 直播会是国风音乐破壁的临门一脚吗?
- 利用Ffmpeg获得flv视频缩略图和视频时间的代码
- codeigniter教程之上传视频并使用ffmpeg转flv示例
- PHP使用ffmpeg给视频增加字幕显示的方法
- PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
- 快速解决Android平台移植ffmpeg的一些问题
- java调用ffmpeg实现视频转换的方法
- python+ffmpeg视频并发直播压力测试
- php使用ffmpeg向视频中添加文字字幕的实现方法
- [总结]RTMP流媒体技术零基础学习方法
- [总结]FFMPEG视音频编解码零基础学习方法
- ffmpeg的headers设置
- ffmpeg从rtsp抓流存flv[c# NReco.VideoConverter flv]
- FFMPEG 从rtsp抓取流,转存为flv文件。C语言代码方式.
- CentOs 下安装 ffmpeg 以及添加 ogg 音频支持
- Android 音视频深入 十七 FFmpeg 获取RTMP流保存为flv (附源码下载)