沉浸式专业视频体验,从AMD开始

微博

QQ

融媒直播间视频直播平台的设计与实现

2022-04-24 张磊 龙向东 湖北广播电视台 依马狮视听工场


【摘要】 网络直播技术是这两年最受关注的互联网技术之一。它也是融媒体发展和建设中必将使用到的技术。出于完善和扩展湖北广播电台融媒体直播间现有制作、播出的功能,我们设计和建设了这个融媒体直播间视频直播平台。

【关键词】网络直播  流媒体  推拉流  FFmpeg  NGINX


一.引言

在推动媒体深度融合,做大做强主流舆论的目标指引下,湖北广播电台的融媒体直播间近期已经正式投入使用。作为传统广播向新媒体领域发展的重要平台,融媒体直播间成为了大家关注和使用的热点。为了便于对直播间的使用进行管理,提高直播间的使用效率,我们考虑需要一个对直播机房视频节目信号实时远程监看的系统。一来可以实时掌握当前机房的使用情况,二来可以为节目制作人员提供多种终端的节目效果预览的信号源。所以,一个基于流媒体直播技术的融媒体直播间视频直播平台的设计构想应运而生。

二.需求分析

初步设想,需要实现在播出区和办公区的任何可接入到办公内网的地点,使用包括PC、手机、平板等可连接使用互联网的设备对融媒直播间的多路视频信号进行监看。具体的需求整理如下:

(1)能对融媒体直播间3个机位的拍摄画面和一台大洋全能机的PGM信号进行监看。
(2)在播出区和办公区的任何可接入到办公内网的地点都可接入平台进行监看。
(3)平台系统能在包括PC、手机、平板等多种智能设备上使用,实现多屏融合。
(4)兼容ios、android、Windows系统。
(5)采用轻客户端方案,使用H5技术,可使用包括chrome、Safari、 IE等浏览器以及微信进行访问。

三.技术方案

一个完整的视频直播过程,包括采集、处理、编码、封装、推流、传输、转码、分发、解码、播放等环节。每个环节使用哪种技术去实现,之间又要如何去衔接,这是我们在系统设计之初需要确定的。一方面需要研究和对比分析各种技术的相关特性,另一方面还要综合考虑现有设备、资源、需求等因素,然后才能设计出系统的技术方案。

本系统进行直播的流程首先是通过摄像机、手机、摄像头等设备将视频数据经过采集、处理、编码、封装等操作后,再基于直播协议发送到流媒体服务端,服务端接收到数据以后暂存到本地,另一端的用户基于直播协议,请求服务端上的视频数据到手机、平板或者PC,经过解码等操作后即可播放观看。系统的组成结构如下图1:

融媒直播间视频直播平台的设计与实现

依据视频数据传输过程,我们可以将视频直播平台简单的分为推流端、流媒体服务器、拉流端三大部分构成。

1.推流端

该项目中的推流端包括了融媒直播间的3台松下AJ-PX298MC摄像机、大洋全能机eStudio Go以及安装了推流APP的手机或者平板等。这些设备作为本系统的推流端,将会负责完成以下功能:

(1)采集

图像的采集过程主要由摄像机或者手机拍摄成 YUV 编码的原始音视频数据。

(2)处理

通过手机APP或者大洋全能机的编导软件,可以对采集到的视频或者音频原始数据增加一些例如降噪、美颜、水印等额外的效果,一般会在将其编码压缩前进行处理。

(3)编码

对流媒体传输来说,编码非常重要,它的编码性能、编码速度和编码压缩比会直接影响整个流媒体传输的用户体验和传输成本。常见的视频编码器有H.264/AVC、HEVC/H.265、VP8、 VP9、FFmpeg。音频编码器有MP3、 AAC等。

(4)封装

把编码器生成的多媒体内容(视频,音频,字幕,章节信息等)混合封装在一起。几种常见的封装格式包括有:AVI格式(后缀为.avi)、DV-AVI格式(后缀为.avi)、QuickTime File Format格式(后缀为.mov)、MPEG格式(文件后缀可以是.mpg.mpeg.mpe. dat.vob.asf.3gp.mp4等)、WMV格式(后缀为.wmv.asf)、Real Video格式(后缀为.rm.rmvb)、Flash Video格式(后缀为.flv)、Matroska格式(后缀为.mkv)、MPEG2-TS格式(后缀为.ts)。

目前,我们在流媒体传输,尤其是直播中主要采用的就是FLV和MPEG2-TS 格式,分别用于RTMP/HTTP-FLV和HLS协议。

(5)推流

推流是指使用带有推流功能或软件的设备把直播内容传输到服务器的过程。松下的AJ-PX298MC摄像机具有RTMP直推功能,可以将广电级专业视频直接推送到直播平台。大洋全能机eStudio Go同样也具备了RTMP的推流功能,可以将PGM信号推送到流媒体服务器上。而苹果或安卓手机在安装了相应的直播推流APP后也可对系统的流媒体服务器进行推流。所以以上提到的包括采集、处理、编码、封装、推流在内的几个流程都可以由现有软硬件直接完成,无需再进行开发。

2.流媒体服务器

流媒体服务器在本系统中的作用主要是转码和分发。

(1)转码

视频直播拉流端的码率是根据推流端决定的,即拉流端的码率在理想情况下是与推流端的码率保持一致的。但是在实际的应用中,如果遇到网络带宽低于所选码率的最低要求网络带宽时,就需要调整拉流端或者推流端的相应设置。如果是推流端与流媒体服务器间的网络带宽过低,那么将导致视频出现卡顿的现象。需要调低推流端的拍摄分辨率和码率。同时,如果拉流端所设置的分辨率和码率高于推流端的设置,那么播放效果必然无法达到预期值。反之,如果是拉流端与流媒体服务器间的网络带宽过低,那么就需要流媒体服务器提供多种码率的播流地址以供拉流端播放器切换使用。所以,流媒体服务器的转码过程可以理解为将视频源转换成多种码率和分辨率的视频数据的过程。

(2)分发

流媒体服务器的另一个作用是负责直播流的发布和转播分发功能。根据前文所列需求,用户能在包括PC、手机、平板等多种智能设备上使用,实现多屏融合的需求可以看出,拉流终端的设备硬件、操作系统、播放软件都存在多种可能性。那么首先是在RTMP、RTSP以及HLS这三种常用流媒体直播协议中选择合适的使用。它们其各自都具有不同的优缺点和适用的场景。

RTMP(Real Time Message Protocol实时信息传输协议)协议是由Ad o be公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。其特点是稳定性高,在PC平台上flash播放的最稳定方式是RTMP,而且一般主流编码器都支持该协议,使用较为方便。加上推流使用的协议也是RTMP,所以在服务器端无需进行转换。做为本系统PC机(windows系统)拉流端的协议是合适的。

HLS(HTTP Live Streaming)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U(m3u8) playlist文件,用于寻找可用的媒体流。其基于HT TP协议的特性使其在与H5技术结合后具有不错的跨平台特性。对于iOS和Android上的浏览器都可实现拉流播放。甚至在PC上亦可通过相应的插件使其支持HLS协议。当然,其延迟较长的缺点也是比较突出的。不过综合来看,对于本系统的移动端需求而言,目前没有更好的直播协议可以选择;再者,本系统对于直播的延时并没有很高的要求。所以,本系统的移动端拉流的直播协议选择采用HLS协议。

综合以上要素,考虑通用性、稳定性因素,流媒体服务器将使用FFmpeg+NGINX+RTMP模块的组建方案。

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为视频流的开源计算机程序。FFmpeg有非常强大的功能,包括视频采集功能、视频格式转换、视频编码、视频抓图、视频加水印等。不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。

Nginx是一款轻量级服务器、反向代理服务器及电子邮件代理服务器。其特点是占用内存少,并发能力强。与apache相比,其占用更少的内存及资源。nginx处理请求是异步非阻塞的,而apache则是阻塞型的,在高并发下,nginx能保持低资源低消耗高性能,用它来做hls或者rtmp流媒体服务器是非常不错的选择。
本系统的可使用范围被限定于本地的办公网,用户数和并发量都比较有限,所以没有做CDN的配置和部署。

3.拉流端

拉流端即用户用来播放视频的移动终端或PC。用户要获取直播视频资源时,首先使用终端的浏览器或者微信APP访问本系统的内容发布服务器。在通过身份验证后,服务程序会返回相应的直播拉流地址与播放页面给用户所使用的客户端。

因为采用了基于HT T P协议的HLS协议,HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同, HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器,无论是iOS还是Android系统的手机都可以支持。再加上这些年HTM5技术的不断发展和完善,我们现在完全可以使用H5页面来完成流媒体的播放功能,同时也实现了轻客户端的设计。这样既免去了用户下载安装APP的麻烦,也实现了一次开发,多平台共用的便利。而对于PC端而言,在安装了Flash 视频播放插件后,就可以支持RTMP协议的流媒体视频播放。如前文所提到的,这将带来更低的直播延时。不过,对于服务器端来说,虽然PC端同样是采用H5页面播放的形式,但在页面中还需要内嵌video.js播放器的方式才能完成拉流播放。Video. js是一款优秀的HTML5 Web视频播放器。它同时支持HTM5和Flash视频,支持在桌面和移动设备上的视频播放,截至目前,大概有40W的站点在使用Video.js作为web播放器。

依照以上方案内容,系统架构将如下图2所示:

融媒直播间视频直播平台的设计与实现

图2

四.系统功能实现

1.流媒体服务器的安装与配置

本系统使用的是F F m p e g+NGINX+RTMP模块组建的流媒体服务器。虽然可以跨平台安装使用,但Linux在性能、安全性、易于维护、开源等方面都具有明显的优势。所以本系统使用了Ubuntu 18.10作为流媒体服务器的操作系统。

在安装完NGINX、FFmpeg以及其相关依赖后,再通过配置nginx.conf文件,就可以设定需要的推流地址以及转码参数。本系统的部分配置内容如下图3所示:

融媒直播间视频直播平台的设计与实现

图3

文件中通过application开启了数个直播通道并以live_加数字命名。同时,还用exec加入了命令行的执行,调用FFmpeg对原rtmp协议直播流进行分辨率和码率重设后,作为HLS协议直播流的数据源。

2.拉流端的实现

如前文所述,因为使用了HLS协议,在移动终端的拉流播放就完全可以使用HTML5的页面播放流媒体视频了。这意味着我们开发的程序天然地兼容ios、android两大手机操作系统的浏览器,甚至可以使用包括微信在内的支持网页浏览的APP也能播放本系统的直播视频。我们省去了在大量可能要花在重复开发个兼容性调试方面的时间。也给用户的使用上带来很大的便利。

融媒直播间视频直播平台的设计与实现

图4

在具体开发中,我们使用了MUI框架,以求在最终效果与体验上能最接近原生APP,同时也不会消耗终端太多性能。部分代码如图4所示。在代码中只需使用<video>标签即可调用播放插件,非常简便。同时配合相应的js代码实现分布加载,减少页面空白时间。而最终的使用效果也是令人满意的。移动端客户端页面及拉流播放效果如图5所示:

融媒直播间视频直播平台的设计与实现

图5

在PC端的拉流播放因为使用的是RTMP协议,需要使在网页中内嵌Video. js来实现播放。效果如下图6所示:

融媒直播间视频直播平台的设计与实现

图6

3.手机直播推流

除了融媒直播间的摄像机和大洋全能机可以直接推流以外,目前在苹果和安卓手机上都有免费的推流APP可以安装使用。配合融媒体直播间的直播平台就可以将手机的直播画面传回到融媒直播间的大洋全能机上了。效果下如图7所示,其中手机采用竖屏模式拍摄。

融媒直播间视频直播平台的设计与实现

图7

五.结束语

可以说网络直播技术是这两年最受关注的互联网技术之一。传统媒体要走向融合,走向互联网,那么对网络直播技术的应用就不可或缺。那么作为媒体技术工作者,对网络直播技术的学习和了解无疑会对今后在融媒时代的工作有所帮助。开发组人员起初是出于完善湖北广播电台融媒直播间日常制作播出业务功能的目的而提出了这个融媒体直播间节目信号监看系统的开发构想。而整个开发过程也是我们对融媒相关技术的探索和实践。B&P

网络直播 流媒体 推拉流 FFmpeg NGINX

视听科技视频号 广告
发表评论