视频直播方案(播放器和SDK)

首先是主播方,它是产生视频流的源头,通过一定的设备来采集数据。比如我们的是通过车载终端来获取视频流数据的。

其次是播放端,播放端功能有两个层面,第一个层面是关键性的需求;另一层面是业务层面的。先看第一个层面,它涉及到一些非常关键的指标,比如秒开,在很多场景当中都有这样的要求,然后是对于一些重要内容的版权保护。为了达到更好的效果,我们还需要配合服务端做智能解析,这在某些场景下也是关键性需求。再来看第二个层面也即业务层面的功能,对于一个社交直播产品来说,在播放端,观众希望能够实时的看到主播端推过来的视频流,并且和主播以及其他观众产生一定的互动,因此它可能包含一些像点赞、聊天和弹幕这样的功能,以及礼物这样更高级的道具。

直播服务器端提供的最核心功能是收集主播端的视频推流,并将其放大后推送给所有观众端。除了这个核心功能,还有很多运营级别的诉求,比如鉴权认证,视频连线和实时转码,自动鉴黄,多屏合一,以及云端录制存储等功能。另外,对于一个主播端推出的视频流,中间需要经过一些环节才能到达播放端,因此对中间环节的质量进行监控,以及根据这些监控来进行智能调度,也是非常重要的诉求。实际上无论是主播端还是播放端,他们的诉求都不会仅仅是拍摄视频和播放视频这么简单。在这个核心诉求被满足之后,还有很多关键诉求需要被满足。比如,对于一个消费级的直播产品来说,除了这三大模块之外,还需要实现一个业务服务端来进行推流和播放控制,以及所有用户状态的维持。如此,就构成了一个消费级可用的直播产品。

视频直播方案(包括APP在内)

录制->编码->网络传输->解码->播放

以上为直播的整体流程,根据该流程分为以下技术点:

怎样录制直播视频(流媒体源/编码/封装)怎样实时上传直播视频(视频推流:

如何推/往哪里推/推流服务器)怎样播放直播视频(如何看: HLS/rtmp/flv)直播间的用户是如何交互

如何搭建一个完整的视频直播系统?一个完整的直播系统大致包含这几个环节:采集、前处理、编码、传输、解码和渲染。在两端传输的过程中再加上一个服务端处理。大致的模型如下:

推流,指的是把采集阶段封包好的内容传输到服务器的过程。

流程如下:

经过输出设备(AVCaptureVideoDataOutput)得到原始的采样数据--视频数据(YUV)和音频数据(AAC);

使用硬编码(对应系统的API)或软编码(FFMpeg)来编码压缩音视频数据;分别得到已编码的H.264视频数据和AAC音频数据;

根据不同的封装格式(如FLV、TS、MPEG-TS);

使用HLS协议的时候加上这一步(HLS分段生成策略及m3u8索引文件)通过流上传到服务器;

服务器进行相关协议的分发目前主流的推送协议,以及各自的优缺点如下:

RTMP

RTMP是Real Time Messaging Protocol(实时消息传输协议)的缩写,是Adobe公司为Flash/AIR平台和服务器之间音、视频及数据传输开发的实时消息传送协议。

RTMP协议基于TCP,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP协议中,视频必须是H264编码,音频必须是AAC或MP3编码,且多以flv格式封包。RTMP是目前最主流的流媒体传输协议,对CDN支持良好,实现难度较低,是大多数的直播平台的选择。

不过RTMP有着一个最大的不足——不支持浏览器,且Adobe已不再更新。因此直播服务要支持浏览器的话,需要另外的推送协议支持。

HLS

Http Live Streaming是由Apple公司定义的基于HTTP的流媒体实时传输协议。它的原理是将整个流分为多个小的文件来下载,每次只下载若干个。服务器端会将最新的直播数据生成新的小文件,客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。基本上,HLS是以点播的技术实现了直播的体验。因为每个小文件的时长很短,客户端可以很快地切换码率,以适应不同带宽条件下的播放。

分段推送的技术特点,决定了HLS的延迟一般会高于普通的流媒体直播协议。

传输内容包括两部分:一是M3U8描述文件,二是TS媒体文件。TS媒体文件中的视频必须是H264编码,音频必须是AAC或MP3编码。

由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,不过HLS的

WebRTC

WebRTC(Web Real-Time Communication),即“源自网页即时通信”。

WebRTC是一个支持浏览器进行实时语音、视频对话的开源协议。

WebRTC的支持者甚多,Google、Mozilla、Opera推动其成为W3C推荐标准。

WebRTC支持目前的主流浏览器,并且基于SRTP和UDP,即便在网络信号一般的情况下也具备较好的稳定性。

此外,WebRTC可以实现点对点通信,通信双方延时低,是实现“连麦”功能比较好的选择。

拉流,指服务器已有直播内容,用指定地址进行拉取的过程。根据协议类型(如RTMP、RTP、RTSP、HTTP等),与服务器建立连接并接收数据;流程如下:

解析二进制数据,从中找到相关流信息;根据不同的封装格式(如FLV、TS)解复用(demux);

分别得到已编码的H.264视频数据和AAC音频数据;

使用硬解码(对应系统的API)或软解码(FFMpeg)来解压音视频数据;经过解码后得到原始的视频数据(YUV)和音频数据(AAC);

因为音频和视频解码是分开的,所以我们得把它们同步起来,否则会出现音视频不同步的现象,比如别人说话会跟口型对不上;

最后把同步的音频数据送到耳机或外放,视频数据送到屏幕上显示。

直播架构(包括APP)

  1. 采集端流程

(1)音视频采集

(2)视频处理

(3)音视频编码压缩

(4)把音视频封装成FLV.TS

采集端;(常用框架)

AVFoundation框架 数据

FFmpeg 框架  音频压缩

X264 框架   视频压缩

Libremp 框架   推流

  1. 服务器流程

(1)数据分发 (SDN)

(2)展示画面

(3)录制视频

(4)实时转码

常用服务器;

SNS、BMS、nginx

  1. 播放端流程

(1)从FLV.TS中获取音视频数据

(2)音视频编码

(3)播放

RTSP;实时流传输协议,是TCP/IP协议体系中的一个应用层协议.RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。

RTMP;实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。

FLV中的TS;首先引入dts(decode time-stamp)的概念,解码时间戳,标识数据送入解码器的时间,就是开始解码的时间,应该按时随着解码顺序而递增的。 flv格式在码流里有time-stamp位。由Timestamp和TimestampExtended组合得出TS(time-stamp),单位是毫秒。

可见TS是递增的,又知道此码流有B帧,所以播放顺序一定是和解码顺序不同的。所以flv中的TS应该是DTS。

HLS;Http Live Streaming是由Apple公司定义的基于HTTP的流媒体实时传输协议。它的原理是将整个流分为多个小的文件来下载,每次只下载若干个。服务器端会将最新的直播数据生成新的小文件,客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。基本上,HLS是以点播的技术实现了直播的体验。因为每个小文件的时长很短,客户端可以很快地切换码率,以适应不同带宽条件下的播放。

简单讲就是把整个流分成一个个小的,基于HTTP的文件来下载,每次只下载一些,前面提到了用于H5播放直播视频时引入的一个.m3u8(extended M3U playlist)的文件,这个文件就是基于HLS协议,存放视频流元数据的文件。

分段推送的技术特点,决定了HLS的延迟一般会高于普通的流媒体直播协议。

传输内容包括两部分:一是M3U8描述文件,二是TS媒体文件。TS媒体文件中的视频必须是H264编码,音频必须是AAC或MP3编码。

由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,不过HLS的WebRTCWebRTC(Web Real-Time Communication),即“源自网页即时通信”。

WebRTC是一个支持浏览器进行实时语音、视频对话的开源协议。WebRTC的支持者甚多,Google、Mozilla、Opera推动其成为W3C推荐标准。WebRTC支持目前的主流浏览器,并且基于SRTP和UDP,即便在网络信号一般的情况下也具备较好的稳定性。

原文地址:https://www.cnblogs.com/taluo2019/p/10942860.html

时间: 2024-11-10 11:23:36

视频直播方案(播放器和SDK)的相关文章

集RTMP、HLS、FLV,、WebSocket 于一身的网页直播/点播播放器方案EasyPlayer.js视频播放界面快照和拉伸按钮显示多个的处理流程

背景分析 EasyPlayer几乎涵盖了开发者所需的全部平台,尤其是在web端的EasyPlayer.js,极大地方便了开发者在解决B/S型业务开发时遇到的播放器接入的问题,比如:不懂前端的js代码.没有公网服务器放置这些js脚本和网页.微信对接入IP播放地址有限制等. EasyPlayer.js适时地推出了一款非常优秀的工具页面,集 rtmp, hls, flv, websocket 于一身的网页直播/点播播放器, 使用简单, 功能强大,不论是测试,还是被集成,都很方便. 支持m3u8播放;

视频直播方案有哪些令人惊艳的效果?

从视频直播系统诞生以来,它就为这个时代注入了新的活力.而经过2016年的洗礼,直播行业借着时代的东风,发展迅猛.更是不知道有多少人通过直播平台声名远播.那么视频直播方案有什么效果呢? 1.提升宣传效果:视频直播的力量让不少片商看到其在宣传方面的巨大潜力,如娱乐圈内诸多新片.新剧的发布会等都会采用这种方式进行宣传.但是对于其他行业来讲在产品的宣传上也能够起到一定的效果. 2.创新传统直播体验:打破时空限制,使得用户参与直播的方式不受时空的限制,实现边走边直播.同时依托新技术加入更多的直播效果,为用

视频直播方案(加强版)

一 相关技术说明 1 概述 1.1通用直播总体架构 Java在用于视频开发时主要采用的技术框架是FFmpeg和OpenCV.数据库和其他的功能实现可以使用Java Web的相关技术就可以实现. FFmpeg主要有两种网络传输协议:RTSP.RTMP RTSP;实时流传输协议,是TCP/IP协议体系中的一个应用层协议.RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输. RTMP;实时消息传输协议)的首字母缩写.该协议基于TCP,是一个协议族,包括RTMP基本协议及RT

rtmp直播视频流播放器(ckplayer)使用方法

摘要: 在我们编写项目时,也许会接触到一些视频的操作,普通视频流的话,例如Ogg.MPEG4.WebM这类后缀的文件,这几类文件都可以被h5的video标签解析,并不需要做解析操作,那么我们在项目中也会用到直播视频的格式,我在项目中就有涉及到直播的需求,是rtmp格式的直播视频流,起初我找了相关插件进行解析,有video.js插件包,还有ckplayer插件包,因为video.js没有深研究,所以使用的是ckpalyer,该插件能很好的解析rtmp格式的直播视频流,但是需要做一些配置: 第一步:

基于jQuery的视频和音频播放器jPlayer

jPlayer见网络上资料很少,官方英文资料太坑爹TAT,于是就写一个手记给大家参考下.据我观察,jPlayer的原理主要是用到HTML5,在不支持HTML5的浏览器上使用SWF.做到全兼容,这一点很不错.官方还说明,服务器对于MP3文件不要做GZIP压缩,只是徒增CPU而已.并且在Flash播放GZIP的MP3时会出错. jPlayer简介: 想在网页上播放背景音乐,不想用html标签的方式,因为那样只有音乐全部下载完以后才能播放,还容易出现跨浏览器兼容性的问题,于是选了一款基于jQuery的

手机影音第十一天,显示视频缓冲,显示卡顿时的网速,播放系统视频时调用播放器的选择

代码已经托管到码云,有兴趣的小伙伴可以下载看看 https://git.oschina.net/joy_yuan/MobilePlayer 一.设置视频缓冲进度 显示视频播放进度的效果图如下:灰色的是缓冲的进度. 原理:只有播放网络视频时,才有缓冲这个说法,所以要先判断视频资源是否为网络资源 /**  * 判断是否是网络的资源  * @param uri  * @return  */ public boolean isNetUri(String uri) {     boolean reault

【问题解决方案】之 关于某江加密视频swf专用播放器仍无法播放的问题

前言: 从pt上下载了一些语言学习的视频之后一直打不开,百度谷歌了若干种方法仍然无解.无奈放弃. 某日从百度知道里又看到一个方法,试了一下,居然灵了.呜呼哀哉.赶紧记下来. 原方法链接:https://zhidao.baidu.com/question/1496575492776438179.html 第一步:得有自带的播放器swfplayer 第二步:原电脑没有flash player也可以,不用装 第三步:打开360安全卫士,找到首页的人工服务 第四步:进行"网页游戏玩不了"的问题

基于ffmpeg和libvlc的视频剪辑、播放器

以前研究的时候,写过一个简单的基于VLC的视频播放器.后来因为各种项目,有时为了方便测试,等各种原因,陆续加了一些功能,现在集成了视频播放.视频加减速.视频剪切,视频合并(增加中)等功能在一起.有时候看点网上下载的视频,可以一边看,一边能处理视频前后的广告,感觉也还可以用,就想把它开源出去,一方面希望有需要的朋友可以参考.借鉴,另一方面也希望可以促进它进一步的丰富功能,最终能实现一款简单又够用的视频剪辑软件. 程序框架 先上一张程序截图 基本上讲,它的播放功能是基于VLC,剪辑功能是基于FFmp

体育赛事视频直播方案

播已经走入千家万户.各种领域的直播应用.平台如雨后春笋般的涌现.这当然也包括各种体育赛事的直播如篮球赛事直播,足球赛事直播,排球赛事直播等等.对于体育迷来说,NBA.西甲.英超.德甲.意甲.中超.CBA这些比赛是最熟悉不过的了. 作为观赏赛事者有很多选择: Zhibo.tv: 直播TV最精彩的体育娱乐直播平台. 乐视体育: 让每个人更好的参与体育. 企鹅直播: 最全体育赛事视频直播平台. 章鱼: 全民原创互动的体育直播. 那么如果作为运营者,想要搭建一套体育赛制直播的平台要如何实现呢?首先我们来