画龙点睛:捋起袖子亲手操练直播项目


***【在线视频教程】***

好文章,来自【福优学苑@音视频+流媒体】

直播模型与架构图


一个通用的直播模型一般包括三个模块:主播方、服务器端和播放端。

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


image.png


首先是主播方,它是产生视频流的源头,由一系列流程组成:第一,通过一定的设备来采集数据;第二,将采集的这些视频进行一系列的处理,比如水印、美颜和特效滤镜等处理;第三,将处理后的结果视频编码压缩成可观看可传输的视频流;第四,分发推流,即将压缩后的视频流通过网络通道传输出去。


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


直播服务器端提供的最核心功能是收集主播端的视频推流,并将其放大后推送给所有观众端。除了这个核心功能,还有很多运营级别的诉求,比如鉴权认证,视频连线和实时转码,自动鉴黄,多屏合一,以及云端录制存储等功能。另外,对于一个主播端推出的视频流,中间需要经过一些环节才能到达播放端,因此对中间环节的质量进行监控,以及根据这些监控来进行智能调度,也是非常重要的诉求。


实际上无论是主播端还是播放端,他们的诉求都不会仅仅是拍摄视频和播放视频这么简单。在这个核心诉求被满足之后,还有很多关键诉求需要被满足。比如,对于一个消费级的直播产品来说,除了这三大模块之外,还需要实现一个业务服务端来进行推流和播放控制,以及所有用户状态的维持。如此,就构成了一个消费级可用的直播产品。



实现思路与步骤



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


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

怎样录制直播视频(流媒体源/编码/封装):FFmpeg

怎样实时上传直播视频(视频推流: 如何推/往哪里推/推流服务器)

Ffmpeg -i xxxxxx(video,audio)  -y rtmp://192.168.1.34:1935/rtmp/channel1[Nginx+rtmp]

怎样播放直播视频(如何看: HLS/rtmp/flv, videojs,ffplay,vlc,android,ios)

直播间的用户是如何交互(送礼物/聊天室/弹幕:文字性交互)


如何搭建一个完整的视频直播系统?


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

大致的模型如下:


image.png


直播系统解决方案-搭建你自己的直播平台


视频采集与编码:FFmpeg

直播流服务器:SRS或Nginx(Rtmp/hls)

播放器: 网页端Video.js+vlc



亲手用FFmpeg来直播推流


Live_test1.cpp




好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***