一、了解直播
热门直播产品
映客,斗鱼,熊猫,虎牙,花椒等等
直播效果图
1、聊天
私聊、聊天室、点亮、推送、黑名单等;
2、礼物
普通礼物、豪华礼物、红包、排行榜、第三方充值、内购、礼物动态更新、提现等;
3、直播列表
关注、热门、最新、分类直播用户列表等;
4、自己直播
录制、推流、解码、播放、美颜、心跳、后台切换、主播对管理员操作、管理员对用户等;
5、房间逻辑
创建房间、进入房间、退出房间、关闭房间、切换房间、房间管理员设置、房间用户列表等;
6、用户逻辑
普通登陆、第三方登陆、注册、搜索、修改个人信息、关注列表、粉丝列表、忘记密码、查看个人信息、收入榜、关注和取关、检索等;
7、观看直播
聊天信息、滚屏弹幕、礼物显示、加载界面等;
8、统计
APP业务统计、第三方统计等;
9、超管
禁播、隐藏、审核等;
二. 一个完整直播app原理
直播原理:把主播录制的视频,推送到服务器,在由服务器分发给观众观看。
直播环节:推流端(采集、美颜处理、编码、推流)、服务端处理(转码、录制、截图、鉴黄)、播放器(拉流、解码、渲染)、互动系统(聊天室、礼物系统、赞)
三 .一个完整直播app实现流程
1.采集、2.滤镜处理、3.编码、4.推流、5.CDN分发、6.拉流、7.解码、8.播放、9.聊天互动
四 一个完整直播app架构
直播流程
1.采集
对于采集Android要做机型适配
2、前处理
直播前美颜效果,功耗大的,会导致摄像头掉帧。
3、编码
采用硬编,软编码720P,硬软编码兼容性问题,分辨率,帧率,码率找平衡点
4、传输
自己做不现实,交给CDN服务商吧,假设2W PCU大约每月带宽费用100万左右,因为清晰流畅的720p要1.5mbps左右。CDN只提供了带宽和服务器间传输,发送和接收端的网络连接抖动缓冲还是要自己写的。不想要卡顿,必然要加大缓冲,会导致延迟高,延迟高影响互动性,要做权衡。
5.解码
也肯定要硬解码,目前手机普遍支持硬解了,只是android上还是有兼容性大坑要填。
6.渲染
这个难点不在于绘制,而在于音画同步,目前几个直播做得都不好。
此外音频还有几个坑要填,比如降噪,音频编码器的选择,各种蓝牙耳机,各种播放模式的适配等,如果你想做主播和观众连线聊天,还有个回声消除问题。
拉流流程
1、建立socket
2、握手
3、建立连接,连接App
4、设置window size
5、createStream 建立流
6、play
7、设置chunk ,改chunk值为客户端上传值,拉流可不设置
8、读取流数据
RTMP推流拉流
一、介绍
RTMP 是 Real Time Messaging Protocol (实时消息传输协议) 的首字母缩写。
该协议基于 TCP, 是一个协议族,包括 RTMP 基本协议及 RTMPT/RTMPS/RTMPE 等多种变种。
推流:为将直播内容推送至服务器的过程; 拉流:为服务器已有直播内容,用指定地址进行拉取的过程
RTMP 地址规则: 第一种(比较常见): rtmp://域名或 ip:端口(如没有,则默认是 1935)/应用名/串流名称 第二种(比较少见): rtmp://域名或 ip:端口(如没有,则默认是 1935)/串流名称
实列地址:rtmp://push.test.com/appname/streamname
等同于:rtmp://push.test.com:1935/appname/streamname
常见的 rtmp 地址填写有两种方式: 比如拿 Mshow 的一个推流地址来当示例: rtmp://mcs.rtmp.yy.com/newpublish/1606_1606_1301014348_881_0?transcode=1&secret=e2f5 8f5472df414378744ed5f6400c2e&t=1526459992 第一种:一行填写完,比如 Mshow: 第二种:分成两行填写,比如 OBS、Mshow:
注:分成两行填写是以最右边的斜杠为分隔符来分割为两行的。
二、RTMP 推流失败原因及解决方法:
1、地址填写错误
A、一般常见的错误是填写两行时,分割错误或直接填写成一行; 解决方法:参照上面正确的填写方式。
B、推流地址填写成拉流地址,目前大部分直播平台的推流地址和拉流地址都是不一样的, 极个别是一样的; 解决方法:填写前跟 RTMP 地址商沟通清楚需要填写的是推流地址,而不是拉流地址;
C、填写非 rtmp 的流地址; 解决方法:参照上面正确 RTMP 地址的填写方式进行填写。
D、地址长度被限制,填写内容被截断;
解决方法: 检查填写的地址长度是否和原来地址一摸一样, 部分推流 app 或者软件会提示能 填写多长的 RTMP 地址。
目前 Mshow 的 RTMP 推流地址已经进行了优化,长度一般在 126 左右,满足常见软件 RTMP 地址长度的要求。
2、网络问题
A、推到服务器的媒体流码率超过当前推流所在环境的网络上传带宽; 解决方法: 开播前用 http://www.speedtest.cn/或 http://www.speedtest.net 测试下当前的网络 带宽,然后再根据情况升级带宽或降低推流码率;
B、电脑使用的 DNS 服务器解析不了推流地址里的域名(编码器推流也类似); 解决方法:使用 ping mcs.rtmp.yy.com 命令,如无法 ping 通,说明 DNS 服务器无法解析,可 网络搜索电脑所在地区的 DNS 服务器 ip,然后填写到电脑中;还可以试试谷歌公开的 DNS 服务器 ip:8.8.8.8,或国内公开的 DNS 服务器 ip: CNNIC:1.2.4.8 和 210.2.4.8 南京信风:114.114.114.114 和 114.114.115.115(公共版),114.114.114.119 和 114.114.115.119(反木马版),114.114.114.110 和 114.114.115.110(校园版或绿色版) 阿里巴巴/中国万网:223.5.5.5 和 223.6.6.6 百度:180.76.76.76 OneDNS:112.124.47.27 和 114.215.126.16 DNS 派:101.226.4.6 和 218.30.118.6(电信),123.125.81.6 和 140.207.198.6(联通)
C、网络运营商限制或路由器限制了某些端口,导致推流失败; 解决方法:win7 以上系统需要在【控制面板->程序和功能->打开或关闭 windows 功能】里打 开 telnet 客户端: 然后在命令行输入:telnet mcs.rtmp.yy.com 1935,如果有提示错误,说明端口被禁用,请联 系网络运营商或设置路由器开放 RTMP 默认端口 1935,或更换无此限制的网络;
3、推流限制
A、流媒体服务器限制指定 ip 才可以推流,需要添加推流 ip 白才可以推流(比较少见, 一般是在 RTMP 地址里附带权限验证是否可推流); 解决方法:Mshow 内置推流地址已经附带权限验证,无 ip 限制;
B、推到服务器的音视频编码格式不被支持,导致服务器拒绝接收; 解决方法:Mshow 支持的 RTMP 流里带的视频编码为 H.264,音频编码为 AAC-LC、AAC-HE v2(EAAC+)、MP3 共 3 种,音频采样率要求为 44100,不支持 48000,需要设置源编码器的音 频采样率为 44100;不支持其他音视频编码格式;
三、RTMP 拉流失败原因及解决方法: 可使用常见支持播放 RTMP 流的播放器进行播放(比如 VLC、PotPlayer 等),如提示无法播放, 要么服务器没有推流,要么网络有问题,可按照下面各种解决方法进行排查:
1、地址填写错误
A、拉流地址为错误地址,不能被正确解析; 解决办法:参加上面正确地址填写格式填写;
B、填写非 rtmp 的流地址; 解决方法:参照上面正确 RTMP 地址的填写方式进行填写。
C、拉流地址填写成推流地址,目前大部分直播平台的推流地址和拉流地址都是不一样的, 极个别是一样的; 解决方法:填写前跟 RTMP 地址商沟通清楚需要填写的是拉流地址,而不是推流地址;
D、拉流地址为内网地址,不能被互联网上拉流服务器识别; 解决方法:Mshow3.0 及以上的新版本已经支持拉内网 RTMP、RTSP 流,旧版本不支持内网 拉流,请确认你使用的 Mshow 版本,如想用此功能,请升级到新版本。
2、网络问题
A、网络运营商或流媒体的服务器出口路由器限制了某些端口,导致拉流失败 (比较少 见); 解决方法:可采样【telnet 服务器 ip 地址 RTMP 端口】方式判断,如有限制,进行相应设 置或解除限制;
B、直播内容的服务器和 Mshow 的拉流服务器的各自网络运营商之间网络不通(比较 少遇到); 解决方法:可以联系 Mshow 官方技术人员和内容商进行沟通确认,Mshow 支持的网络 运营商有电信、联通、移动等;或者更换直播内容的服务器的网络。
C、网络使用高峰期,网络拥塞,导致拉流超时; 解决方法:将直播内容的服务器部署到网络带宽比较充裕、网络速度比较好的机房, Mshow 的拉流服务器都分散处于各个核心机房,带宽充裕,网络速度比较好。
3、拉流限制
A、直播内容的流媒体服务器限制指定 ip 才可以拉流,需要添加拉流 ip 白才可以 拉流;(一般有限制时,商会提前要求加拉流 ip 白) 解决方法:如遇到这种情况,请联系 Mshow 官方客服获取;
B、直播内容的流媒体服务器的音视频编码格式不被拉流服务器支持,导致解码失败; 解决方法:Mshow 支持的 RTMP 流里带的视频编码为 H.264,音频编码为 AAC-LC、AAC-HE v2(EAAC+)、MP3 共 3 种,音频采样率要求为 44100,不支持 48000,需要设置源编码器的音 频采样率为 44100;不支持其他音视频编码格式;