直播现状
一个字:🔥,目前随便一个公司加功能就说,来给我整个直播进去,作为一个菜🐶程序员,我们就显得很苦逼了,直播难,难于上青天
直播难
1.一个完整直播app功能
1、聊天
- 私聊、聊天室、点亮、推送、黑名单等;
2、礼物
- 普通礼物、豪华礼物、红包、排行榜、第三方充值、内购、礼物动态更新、提现等;
3、直播列表
关注、热门、最新、分类直播用户列表等;
4、自己直播录制、推流、解码、播放、美颜、心跳、后台切换、主播对管理员操作、管理员对用户等;
5、房间逻辑
- 创建房间、进入房间、退出房间、关闭房间、切换房间、房间管理员设置、房间用户列表等;
6、用户逻辑
- 普通登陆、第三方登陆、注册、搜索、修改个人信息、关注列表、粉丝列表、忘记密码、查看个人信息、收入榜、关注和取关、检索等;
7、观看直播
- 聊天信息、滚屏弹幕、礼物显示、加载界面等;
8、统计
- APP业务统计、第三方统计等;
9、超管
- 禁播、隐藏、审核等;
难受:看完这些你大概就知道这有多难了吧,但是还没完呢,接着看
2.一个完整直播app原理
原理
: 简单来简单的说就是当前直播的用户将录制的视频上传到服务器,然后服务器分发给观看直播的用户
直播流程:
简单来1.采集、2.滤镜处理、3.编码、4.推流、5.CDN分发、6.拉流、7.解码、8.播放、9.聊天互动
3.技术要点
编码,解码
在iOS 8之前你应该知道FFmpeg,否则你根本做不了直播,FFmpeg:是一个跨平台的开源视频框架,能实现如视频编码,解码,转码,串流,播放等丰富的功能。其支持的视频格式以及播放协议非常丰富,几乎包含了所有音视频编解码、封装格式以及播放协议。
然而,iOS 8的时代已经过了,苹果早就给我们提供了
-
VideoToolbox
(苹果自带的视频硬解码和硬编码API ) -
AudioToolbox
(苹果自带的音频硬解码和硬编码API)
这两个API,然而,还是那句话,作为一个菜🐩程序员,我知道,但是还是不想用,(可以了解下的,😋)
X264:
把视频原数据YUV编码压缩成H.264格式
推流,拉流
librtmp:
用来传输RTMP协议格式的数据
RTMP实时消息传输协议,Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议,因为是开放协议所以都可以使用了。
RTMP
协议用于对象、视频、音频的传输。
这个协议建立在TCP协议或者轮询HTTP协议之上。
RTMP协议就像一个用来装数据包的容器,这些数据可以是FLV中的视音频数据。一个单一的连接可以通过不同的通道传输多路网络流,这些通道中的包都是按照固定大小的包传输的
-
chunk:
消息包
播放
自己用FFmpeg
写播放器??我还不想英年早逝..
聊天互动
IM:
(InstantMessaging)即时通讯:是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流.socket??哦,NO,简直受不鸟
在这里,大家主要知道有这个流程就行了,咱先慢慢来