流媒体之从零实现搭建简单流媒体服务器,推流,拉流播放全景视频

一、直播与点播

  • 直播:在我的理解中是实时录制的内容,类似各个晚会的实时直播过程,在现场采集图像的同时传输影像到网络上。
  • 点播:是提前录制完成的内容,类似某些直播平台上根据观众的需求播放某些电影或经典电视剧。终端看到的内容是编辑好的视频文件,不是实时录制的。

本篇文章实现的功能就类似是点播,将本地的全景视频通过服务器传输到各个客户端。

二、实现直播或点播的关键步骤

1、搭建及配置流媒体服务器 ;
2、推流,将本地视频或直播视频以流媒体的形式推送给流媒体服务器 (可能会涉及格式转换);
3、拉流 ,从服务器中将流媒体下载到本地并播放,一般是边下载边播放的过程。

三、具体实现步骤

在搭建流媒体服务器之前需要了解在拉流时我们需要用到哪种协议;目前比较主流的流协议有:RTMP、RTSP及HLS ,其中前两种协议多用于PC,HLS可以很好的支持Android、IOS端。
为了更好的支持手机端观看,我选择的是HLS协议,该协议规定 视频的封装格式为TS,除了TS视频文件本身,还定义了用来控制播放的m3u8文件。
而流媒体做推流时一般会用到RTMP协议,由此本文中推流使用RTMP协议,拉流使用HLS协议。

1. 搭建Windows系统下的nginx流媒体服务器。

网上很多资料是基于linux搭建流媒体服务器,由于本人对服务器相关技术一窍不通,所以选择了尝试在windows系统下直接搭建流媒体服务器。
此处参考如下大神整理的步骤:
Windows下的nginx流媒体服务器搭建过程

2、推送本地视频到流媒体服务器

目前有两种比较主流的推流应用程序:FFmpeg 及 OBS statio

  1. FFmpeg推流 :在大神整理的流媒体服务器搭建过程中有涉及到使用 ffmpeg 中的相关
    命令对本地视频进行推送;
    ①ffmpeg.exe -re -i “a.mp4” -acodec aac -ar 32000 -vcodec copy -f flv “rtmp://193.156.0.56/live/test1”
    以上命令,是需要将本地视频放置在ffmpeg的安装路径之下的,且输入命令时需要定位到该路径下,如下图所示。
    流媒体之从零实现搭建简单流媒体服务器,推流,拉流播放全景视频_第1张图片
    流媒体之从零实现搭建简单流媒体服务器,推流,拉流播放全景视频_第2张图片

② ffmpeg -re -i C:\Users\15248\Desktop\a.mp4 -c copy -f flv rtmp://193.156.0.56/live/test1
以上命令适用于为ffmpeg 配置好了系统环境,且视频放在对应路径(将视频拖到命令窗口即可)。

(2)OBS 推流
OBS是免费且开源的视频录制以及直播推流的软件,广泛使用于视频采集,直播等领域,且支持多种不同的语言界面,操作非常直观方便。
在这里插入图片描述

该软件功能强大,我只是用于本地视频推流,将本地视频添加至工作台,配置好服务器开始推流即可;
流媒体之从零实现搭建简单流媒体服务器,推流,拉流播放全景视频_第3张图片
更多关于OBS软件的功能可以自行了解。

以上两种方法都可以实现将本地视频以流媒体的形式推送到流媒体服务器,且都使用了RTMP协议。

三、拉流及本地视频播放

本地的拉流的实现我是在unity中使用AVPro插件实现的,由于目前AVPro支持HLS协议,且将会应用于手机端,因为拉流选用HLS协议,具体设置如图所示:
流媒体之从零实现搭建简单流媒体服务器,推流,拉流播放全景视频_第4张图片
之后发布安卓端,PC端,均测试成功,实现了边拉流边播放的功能。

写在最后

个人理解,无论是直播还是点播的过程,并不存在真正意义上的暂停操作,只存在直播时长的问题,点播可以通过OBS控制本地视频暂停播放的操作实现推流画面的暂停,看起来好像是视频播放暂停了,但其实推流及拉流一直在进行,只不过一直推流和拉流的画面在暂停画面时,一直是一样的。

你可能感兴趣的:(unity,服务器)