FMUSER更轻松地传输视频和音频!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷兰语
sq.fmuser.org ->阿尔巴尼亚人
ar.fmuser.org ->阿拉伯语
hy.fmuser.org - >亚美尼亚
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄罗斯语
bg.fmuser.org - >保加利亚
ca.fmuser.org ->加泰罗尼亚语
zh-CN.fmuser.org ->中文(简体)
zh-TW.fmuser.org - >中国(繁体)
hr.fmuser.org ->克罗地亚语
cs.fmuser.org ->捷克
da.fmuser.org ->丹麦语
nl.fmuser.org - >荷兰
et.fmuser.org ->爱沙尼亚语
tl.fmuser.org ->菲律宾
fi.fmuser.org ->芬兰语
fr.fmuser.org - >法国
gl.fmuser.org ->加利西亚语
ka.fmuser.org ->乔治亚
de.fmuser.org ->德语
el.fmuser.org - >希腊
ht.fmuser.org ->海地克里奥尔语
iw.fmuser.org ->希伯来语
hi.fmuser.org ->印地语
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰岛语
id.fmuser.org ->印尼语
ga.fmuser.org ->爱尔兰
it.fmuser.org - >意大利
ja.fmuser.org ->日语
ko.fmuser.org ->韩文
lv.fmuser.org ->拉脱维亚
lt.fmuser.org - >立陶宛
mk.fmuser.org ->马其顿语
ms.fmuser.org ->马来语
mt.fmuser.org ->马耳他语
no.fmuser.org - >挪威
fa.fmuser.org ->波斯语
pl.fmuser.org ->波兰语
pt.fmuser.org ->葡萄牙语
ro.fmuser.org - >罗马尼亚
ru.fmuser.org ->俄语
sr.fmuser.org ->塞尔维亚语
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亚
es.fmuser.org ->西班牙语
sw.fmuser.org ->斯瓦希里语
sv.fmuser.org ->瑞典语
th.fmuser.org - >泰国
tr.fmuser.org ->土耳其语
uk.fmuser.org ->乌克兰语
ur.fmuser.org ->乌尔都语
vi.fmuser.org - >越南
cy.fmuser.org ->威尔士语
yi.fmuser.org - >意第绪语
04.实况转播基础知识介绍
1.收集视频和音频
* 1.1捕获视频和音频编码框架*
AVFoundation:AVFoundation是一个用于播放和创建实时视听媒体数据的框架。 它还提供了一个Objective-C界面来操纵这些视听数据,例如编辑,旋转和重新编码。
* 1.2视音频硬件设备*
CCD:图像传感器:在图像采集和处理过程中用于将图像转换为电信号。
拾音器:声音传感器:用于声音收集和处理过程中,将声音转换为电信号。
音频样本数据:通常为PCM格式
视频采样数据:通常为YUV或RGB格式。 原始音频和视频的采集量非常大,需要通过压缩技术进行处理以提高传输效率
2.视频处理(美容,水印)
视频处理原理:由于视频最终是通过GPU逐帧显示在屏幕上的,因此我们可以使用OpenGL ES处理视频帧,从而使视频具有各种效果,就像水龙头流出一样。然后流到不同的目标
现在,使用GPUImage框架实现了各种美容和视频添加特殊效果应用程序。
*视频处理框架*
GPUImage:GPUImage是基于OpenGL ES的功能强大的图像/视频处理框架。 它封装了各种过滤器,还可以编写自定义过滤器。 它内置了120多种常用滤镜效果。
OpenGL:OpenGL(完整的开放图形库)是一个规范,用于定义交叉编程语言,跨平台编程接口,该接口用于三维图像(也可以是二维图像)。 OpenGL是一个专业的图形程序界面,是一个功能强大且易于调用的基础图形库。
OpenGL ES:OpenGL ES(嵌入式系统的OpenGL)是OpenGL 3D图形API的子集,专为嵌入式设备(例如手机,PDA和游戏机)设计。
3.视频编解码
* 3.1视频编码框架*
FFmpeg:是一个跨平台的开源视频框架,可以实现丰富的功能,例如视频编码,解码,代码转换,流传输和回放。 支持的视频格式和播放协议非常丰富,包括几乎所有音频和视频编解码器,封装格式和播放协议。
-Libswresample:它可以执行诸如重新采样,重新矩阵化和转换音频的采样格式之类的操作。
-LibavCodec:提供一个通用的编解码器框架,包括许多视频,音频,字幕流和其他编解码器/解码器。
-Libavformat:用于封装/解压缩视频。
-Libavutil:包含一些常用功能,例如随机数生成,数据结构,数学运算等。
-Libpostproc:用于视频的某些后处理。
-Libswscale:用于视频图像缩放,色彩空间转换等。
-Libavfilter:提供过滤功能。
X264:YuV编码并将原始视频数据压缩为H.264格式
VideoToolbox:苹果自己的视频硬解码和硬编码API,但仅在iOS8之后打开。
audioToolbox:苹果自己的音频硬解码和硬编码API
* 3.2视频编码技术*
视频压缩编码标准:用于视频压缩(视频编码)或解压缩(视频解码)的编码技术,例如MPEG,H.264,这些视频编码技术是对视频进行压缩编码
主要功能:将视频像素数据压缩为视频流,从而减少视频数据量。 如果未对视频进行压缩和编码,则其体积通常非常大,一部电影可能需要数百GB的空间。
注意:对视频质量影响最大的是其视频编码数据和音频编码数据,与包装格式无关
MPEG:一种视频压缩方法,使用帧间压缩,仅存储连续帧之间的差异,以实现更大的压缩率
H.264 / AVC:一种视频压缩方法,该方法使用预预测和与MPEG中的PB帧相同的帧预测方法。 它可以根据需要生成适合网络传输的视频流,并具有较高的压缩率。 具有更好的图像质量
注1:如果您比较单个屏幕的定义,则mpeg4具有优势。 从动作连续性的定义来看,H.264具有优势
注2:因为264的算法更复杂,所以该程序实现起来很麻烦,并且需要更多的处理器和内存资源来运行它。 因此,运行264需要相对较高的系统要求。
注3:因为264的实现更加灵活,所以一些实现留给了制造商自己。 尽管这给实现带来了很多好处,但不同产品之间的互通已成为一个大问题,导致采用了A公司。编码器编译的数据必须由A公司的解码器解决,以解决此类尴尬的事情。
H.265 / HEVC:一种基于H.264的视频压缩方法,保留了一些原始技术,同时改进了一些相关技术以改善比特流,编码质量,延迟和算法复杂性之间的关系。
H.265是一种更有效的编码标准,可以在相同的图像质量效果下将内容的体积压缩为较小的大小,并更快地传输并节省带宽。
I帧:(关键帧)保留完整的图像,只需要该帧的数据即可完成解码(因为它包含完整的图像
P帧:(差分帧)保留此帧和前一帧之间的差异。 解码时,需要将先前缓存的图片叠加在此帧定义的差异上,以生成最终图片。 (P帧没有完整的图像数据,只有与前一帧的图像不同的数据)
B帧:(双向差分帧)保留当前帧与上一帧和下一帧之间的差异。 为了解码B帧,不仅必须获得先前的缓冲图片,而且还必须获得解码的图片。 通过前后图像与当前帧数据图像的叠加获得最终结果。 B帧压缩率很高,但是解码时CPU会更累
帧内压缩:在压缩图像帧时,仅考虑该帧的数据,而不考虑相邻帧之间的冗余信息。 通常,在帧中使用有损压缩算法
InteRFrame压缩:时间压缩,通过在时间轴上比较不同帧之间的数据来压缩数据。 帧间压缩通常是无损的
混合(合成):将视频流,音频流甚至字幕流封装到一个文件中(容器格式(FLV,TS)),然后将其作为信号进行传输。
* 3.3音频编码技术*
AAC,mp3:这些是音频编码技术,用于压缩音频
* 3.4费率控制*
多比特率:观众所处的网络状况非常复杂,可能是WiFi,可能是4G,3G甚至2G,那么如何满足多方需求? 根据当前的网络环境,再多建几条线并自定义比特率。
例如:我经常在视频播放软件中看到1024、720,HD,SD,smooth等,它们指的是各种比特率。
* 3.5视频包装格式*
TS:流媒体封装格式。 流媒体封装的优点是在播放之前不需要加载索引,这大大减少了第一次加载的延迟。 如果电影比较长,则mp4文件的索引会很大,这会影响用户体验
为什么使用TS:这是因为可以无缝拼接两个TS剪辑,并且播放器可以连续播放
FLV:流媒体封装格式。 由于文件非常小且加载速度非常快,因此可以在Internet上观看视频文件。 因此,FLV格式已成为当今的主流视频格式。
4.推流
* 4.1数据传输框架*
librtmp:用于以RTMP协议格式传输数据
* 4.2流媒体数据传输协议*
RTMP:实时消息协议,这是Adobe系统开发的一种开放协议,用于Flash播放器和服务器之间的音频,视频和数据传输。 由于它是一个开放协议,因此可以全部使用。
RTMP协议用于对象,视频和音频的传输。
该协议建立在TCP协议或轮询HTTP协议的基础上。
RTMP协议就像用于保存数据包的容器。 这些数据可以是FLV中的视听数据。 单个连接可以通过不同的通道传输多个网络流,并且这些通道中的数据包以固定大小的数据包进行传输
块:消息包
5.流媒体服务器
* 5.1常用服务器*
SRS:由中国人开发的优秀的开源流媒体服务器系统
BMS:它也是流媒体服务器系统,但不是开源的。 它是SRS的商业版本,具有比SRS更多的功能
nginx:自由和开源的Web服务器,通常用于配置流媒体服务器。
* 5.2数据分配*
CDN :(内容交付网络),内容交付网络,将网站的内容发布到距离用户最近的网络的“边缘”,以便用户可以在附近获得所需的内容,解决了Internet网络的拥塞问题,并提高了用户对网站响应速度的访问权限。
CDN:代理服务器,等效于中介服务器。
CDN的工作原理:例如请求流媒体数据
1.将流媒体数据上传到服务器(原始站点)
2.源站存储流媒体数据
3.客户端播放流媒体,并从CDN请求编码的流媒体数据
4. CDN服务器响应该请求。 如果该节点上不存在流媒体数据,它将继续从源站请求流媒体数据;否则,它将继续向源站点请求流媒体数据。 如果视频文件已经在节点上缓存,请跳至步骤6。
5.原始站点响应CDN请求,并将流媒体分发到相应的CDN节点
6. CDN将流媒体数据发送到客户端
回到原点:当用户访问某个URL时,如果解析的CDN节点未缓存响应内容,或者缓存已过期,它将返回到原始站点以进行搜索。 如果没有人访问,则CDN节点将不会主动转到源站点来获取它。
带宽:固定时间可以传输的数据总量,
例如,一个64位,800MHz的前端总线,其数据传输速率等于64bit×800MHz÷8(Byte)= 6.4GB / s
负载均衡:一个服务器集以对称的方式由多个服务器组成。 每个服务器具有同等的状态,并且可以在没有其他服务器协助的情况下独立提供服务。
通过某种负载分担技术,从外部发送的请求被均匀地分配到对称结构中的某个服务器,并且接收请求的服务器独立地响应客户端的请求。
负载平衡可以将客户端请求平均分配到服务器阵列,从而提供对重要数据的快速访问,并解决了大量并发访问服务的问题。
这种集群技术可以用最少的投资获得接近大型机的性能。
QoS(带宽管理):限制每个组的带宽,以便可以使用有限的带宽来发挥最大的作用
6.拉流
直播协议选择:
RTMP,RTSP可用于具有较高实时性或交互性需求的用户
对于有播放或跨平台要求的用户,建议使用HLS
直播协议比较:(5)
HLS:Apple定义的实时流协议。 HLS是基于HTTP协议实现的。 传输内容包括两部分,一个是M3U8描述文件,另一个是TS媒体文件。 它可以实现实时和按需流媒体,主要用于iOS系统
HLS将通过点播技术实现直播
HLS是一种自适应比特率流传输。 客户端将根据网络条件自动选择具有不同比特率的视频流。 如果条件允许,请使用高比特率;当网络繁忙时,请使用低比特率,然后自动在两者之间进行切换
改变。 当移动设备的网络状况不稳定时,这对于确保流畅的播放非常有帮助。
实现方法是服务器提供多比特率的视频流,并在列表文件中注明,播放器根据播放进度和下载速度自动调整。
HLS和RTMP的比较:HLS主要是由于相对较大的延迟,RTMP的主要优点是低延迟
HLS协议的小切片方法将生成大量文件,并且存储或处理这些文件将导致大量资源浪费
与SP协议相比,优点是,一旦完成分段,后续的分发过程就完全不需要使用任何特殊的软件。 普通的网络服务器就足够了,这大大降低了CDN边缘服务器的配置要求,并且可以使用任何现成的CDN。 ,并且一般服务器很少支持RTSP。
HTTP-FLV:基于HTTP协议的流媒体内容。
与RTMP相比,HTTP更简单和众所周知,由于HTTP本身没有复杂的状态交互,因此内容延迟也可以为1到3秒,并且打开速度更快。 因此,从延迟角度来看,HTTP-FLV优于RTMP。
RTSP:实时流协议,定义了一对多应用程序如何通过IP网络有效地传输多媒体数据。
RTP:实时传输协议。 RTP建立在UDP协议上,通常与RTCP一起使用。 它不提供按时交付机制或其他服务质量(QoS)保证。 它依靠低级服务来实现此过程。
RTCP:RTP的支持协议,主要功能是为RTP提供的服务质量(QoS)提供反馈,并收集有关媒体连接的统计信息,例如传输的字节数,传输的数据包数,丢包数,单向和双向网络时延等。
7.解码
* 7.1解封*
解复用(分离):从视频流,音频流和字幕流合成的文件(容器格式(FLV,TS))中分解视频,音频或字幕,然后分别解码。
* 7.2音频编码框架*
fdk_aac:音频编码和解码框架,PCM音频数据和AAC音频数据转换
* 7.3解码介绍*
硬解码:使用GPU解码,减少CPU操作
优点:播放流畅,功耗低,解码速度快,
*缺点:兼容性差
软解码:使用CPU解码
优点:兼容性好
*缺点:CPU负担增加,功耗增加,没有硬件
解码流畅,解码速度相对较慢
8。 玩
ijkplayer:基于FFmpeg的开源Android / iOS视频播放器
API易于集成;
可以削减编译配置,以方便控制安装包的大小;
支持硬件加速解码,更省电
简单易用,指定流URL,自动解码和播放。
9.聊天互动
IM:(InstantMessaging)即时消息传递:是一种实时通信系统,它允许两个或更多人使用网络实时通信文本消息,文件,语音和视频。
IM在实时广播系统中的主要作用是实现观众与锚之间以及观众与观众之间的文本交互。
*第三方SDK *
腾讯云:腾讯提供的即时通讯SDK,可以用作实时聊天室
容云:一种常用的即时通讯SDK,可以用作实时聊天室
5.如何快速开发完整的iOS直播应用程序
1.使用第三方实时流SDK进行快速开发
Qiniu Cloud:Qiniu Live Cloud是专门为实时流媒体平台创建的全球实时流媒体服务,并且是实现SDK端到端实时流场景的企业级实时流媒体云服务平台。
*熊猫电视和七龙珠电视等直播平台均使用Qiniu Cloud
网易视频云:基于专业的跨平台视频编解码技术和大规模的视频内容分发网络,可提供稳定,流畅,低延迟,高并发的实时音频和视频服务,并可将实时视频无缝连接到它自己的应用程序。
2.为何第三方SDK公司向我们提供SDK?
我们希望将我们的产品及其产品绑在一条船上,并更多地依靠它。
技术可以赚钱,可以帮助培养大量的程序员
3.直播功能:自行研究还是使用第三方直播SDK开发?
第三方SDK开发:对于初创团队而言,自行开发的直播技术,技术指标,CDN和带宽方面都有很大的门槛,并且制作完成产品会花费很多时间,这不利于投资。
自我研究:该公司的直播平台很大。 从长远来看,自我研究可以节省成本,并且与直接使用SDK相比,技术方面的可控性要强得多。
4.第三方SDK的好处
降低成本
使用良好的第三方公司服务,您将不再需要花费高昂的价格聘请猎头公司来挖掘昂贵的大母牛,也无需安抚大母牛的个人气质。
提高效率
第三方服务的重点和代码集成所带来的便利可能只需要1-2个小时,就可以节省将近99%的时间,这足以换取更多时间与竞争对手抗衡并增加收益。 成功的可能性很大
降低风险
借助专业的第三方服务,由于其快速,专业,稳定等特点,可以大大提高产品的竞争力(高质量的服务,研发速度等),并缩短试用期错误时间,这无疑将是挽救企业家精神的手段之一。
|
输入电子邮件以获取惊喜
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷兰语
sq.fmuser.org ->阿尔巴尼亚人
ar.fmuser.org ->阿拉伯语
hy.fmuser.org - >亚美尼亚
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄罗斯语
bg.fmuser.org - >保加利亚
ca.fmuser.org ->加泰罗尼亚语
zh-CN.fmuser.org ->中文(简体)
zh-TW.fmuser.org - >中国(繁体)
hr.fmuser.org ->克罗地亚语
cs.fmuser.org ->捷克
da.fmuser.org ->丹麦语
nl.fmuser.org - >荷兰
et.fmuser.org ->爱沙尼亚语
tl.fmuser.org ->菲律宾
fi.fmuser.org ->芬兰语
fr.fmuser.org - >法国
gl.fmuser.org ->加利西亚语
ka.fmuser.org ->乔治亚
de.fmuser.org ->德语
el.fmuser.org - >希腊
ht.fmuser.org ->海地克里奥尔语
iw.fmuser.org ->希伯来语
hi.fmuser.org ->印地语
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰岛语
id.fmuser.org ->印尼语
ga.fmuser.org ->爱尔兰
it.fmuser.org - >意大利
ja.fmuser.org ->日语
ko.fmuser.org ->韩文
lv.fmuser.org ->拉脱维亚
lt.fmuser.org - >立陶宛
mk.fmuser.org ->马其顿语
ms.fmuser.org ->马来语
mt.fmuser.org ->马耳他语
no.fmuser.org - >挪威
fa.fmuser.org ->波斯语
pl.fmuser.org ->波兰语
pt.fmuser.org ->葡萄牙语
ro.fmuser.org - >罗马尼亚
ru.fmuser.org ->俄语
sr.fmuser.org ->塞尔维亚语
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亚
es.fmuser.org ->西班牙语
sw.fmuser.org ->斯瓦希里语
sv.fmuser.org ->瑞典语
th.fmuser.org - >泰国
tr.fmuser.org ->土耳其语
uk.fmuser.org ->乌克兰语
ur.fmuser.org ->乌尔都语
vi.fmuser.org - >越南
cy.fmuser.org ->威尔士语
yi.fmuser.org - >意第绪语
FMUSER更轻松地传输视频和音频!
联系我们
分类目录
订阅电子邮件