您当前的位置:首页 > 计算机 > 服务器 > 网络服务

【Windows Server 2019】流媒体服务的配置与管理——使用FFmpeg推流到EasyDarwin中再通过VLC观看

时间:04-15来源:作者:点击数:

1. 流媒体的基本概念

1.1 流媒体的定义

流媒体,streaming media,又叫流式媒体,它是一种多媒体表现形式。当供应商将媒体交付至互联网后,数据包分段技术将媒体数据压缩,以流的形式在网络中分段传送,当终端用户想要观看时,通过流媒体客户端对数据流进行解压,媒体会向供应商交付前一样显示出来。即实时播放。

(1)传统媒体与流媒体对比

传统方式观看视频文件的过程:视频文件上传到服务器后,用户通过客户端软件将视频全部下载好后,才能观看视频。

流媒体方式:视频文件上传到服务器后,当用户使用客户端软件请求访问(观看)时,数据包通过特殊的压缩方式,将视频文件分成一个个小的数据包,由流媒体服务器向客户端连续的、实时的传送到客户端中,这样用户可以一边观看一边下载,不需要等待视频文件全部下载完后才能观看。

(2)术语解释

推流
  • 指的是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号传到网络的过程。【推流】对网络要求比较高,如果网络不稳定,直播效果就会很差,观众观看直播时就会发生卡顿等现象,观看体验很是糟糕。
拉流
  • 指服务器已有直播内容,用指定地址进行拉取的过程。直播节目内容以流的形式在网络中进行传输。所谓拉流即从云端将直播流拉取到本地。在终端实现直播的播放。
两者区别
  • 推流是把数据推送到服务器的过程,而拉流是从服务器中直播的内容用指定的地址去拉取。

1.2 流媒体的传输方式

包括顺序流式传输和实时流式传输。

(1)顺序流式传输

实时传送,适合现场广播,支持随机访问,用户可快进或后退观看后面或前面的内容。前提条件是保证媒体信号带宽与网络带宽匹配,而且该种传输方式必须需要专用实时流协议

(2)实时流式传输

顺序下载,在给定时刻,用户只能观看已下载的部分,不能跳到还未下载的部分,这种一般比较适合高质量的短片段,如片头、片尾和广告。

1.3 流媒体的工作原理

流式传输一般采用HTTP/TCP来传输控制信息,RTP(实时传输协议)和UDP(用户数据包协议)来传输实时数据。

Q:为什么传输实时数据使用UDP而不是TCP?

A:TCP是可靠的传输协议,传输需要经过三次握手,通信双方都需要确认无误后才能开始传输数据,同时TCP开销很大。而UDP则是不可靠的传输协议,通信双方传输数据时无需经过三次握手验证,发送方只需将数据流发送到接收方即可,无需等待接收方的数据响应报文。例如QQ或者微信等一些SNS通信软件的数据传输均采用UDP,用户只需将信息发送给对方即可。

在这里插入图片描述
  • ① 用户选择流媒体服务后,Web浏览器域Web服务器间使用HTTP/TCP交换控制信息,将需要传输的实时数据从原始数据库中检索出来。
  • ② Web浏览器启动流媒体播放器,使用HTTP从Web服务器检索的相关参数(包括目录信息,视频的编码类型和服务器地址等信息)对流媒体播放器进行初始化。
  • ③ 流媒体播放器与流媒体服务器运行实时流协议,交换控制信息,实时流协议提供执行播放,快进、快倒,暂停和录制等功能。
  • ④ 流媒体服务器通过RTP/UDP协议将视频流数据传输到播放器,一旦数据流抵达客户端,客户端即可播放视频。

1.4 流媒体的播放形式

(1)单播方式

一台服务器传送的数据包只能传递给客户机,采用点到点(P2P)。

(2)组播方式

允许路由器将数据包复制到多个通道,一对多。

(3)点播方式

客户端主动发起与服务器连接,允许用户控制媒体流的播放,可以对网络视频进行开始、停止、后退、快进或暂停等操作。

(4)广播方式

数据包复制发送到网络上所有用户,用户被动接受流不管用户是否需要。

1.5 实验使用软件介绍

(1)EasyDarwin

EasyDarwin 是一款开源的流媒体服务器软件。

EasyDarwin 开源流媒体服务器,是高性能开源RTSP流媒体服务器,基于go语言研发,维护和优化:RTSP推模式转发、RTSP拉模式转发、录像、检索、回放、关键帧缓存、秒开画面、RESTful接口、WEB后台管理、分布式负载均衡等功能。

官方网址:EasyDarwin

  • 本次实验中,以EasyDarwin作为流媒体服务器。

(2)FFmpeg

ffmpeg是完整的跨平台解决方案,用于记录,转换和流传输音频和视频。

网址:FFmpeg

  • 本次实验中,使用ffmpeg将视频推流到流媒体服务器EasyDarwin中

(3)VLC media player

VLC是一个免费的开源跨平台多媒体播放器和框架,可播放大多数多媒体文件以及DVD,音频CD,VCD和各种流协议。

网站:VLC media player

2. 网络拓扑及说明

在这里插入图片描述
  • 流媒体服务器:安装EasyDarwin流媒体服务及ffmpeg推流工具。
    IP地址:192.168.82.228
  • PC2:安装VLC及OBS。

具体过程:流媒体服务器中存在视频库,在流媒体服务器中使用ffmpeg将视频转换为流,然后转发(推流)到EasyDarwin服务中,在PC2上使用VLC或OBS对流媒体服务器中的视频进行拉流,达到观看视频的效果。

3. 流媒体服务的安装及配置

3.1 安装和配置EasyDarwin

(1)下载EasyDarwin

从Github中下载EasyDarwin的Windows端安装包,打开EasyDarwin安装文件夹,文件夹中包括下面几个文件和文件夹:

  • logs文件夹:存放EasyDarwin服务日志信息
  • www文件夹:EasyDarwin的Web UI源码
  • easydarwin.db:存放EasyDarwin的数据
  • EasyDarwin.exe:EasyDarwin的执行程序
  • easydarwin.ini:EasyDarwin配置文件
  • ServiceInstall-EasyDarwin.exe:EasyDarwin服务安装程序
  • ServiceUninstall-EasyDarwin.exe:EasyDarwin服务卸载程序
在这里插入图片描述

(2)设置EasyDarwin配置文件

点击【easydarwin.ini】,修改以下选项:

[http]
port=80
default_username=admin
default_password=admin

[rtsp]
port=554

[http]下的【port】指EasyDarwin的Web控制UI的端口号,默认为10008,根据实际需求修改,这里改成80。

【default_username】和【default_password】是Web控制UI的登录用户名和密码,默认均为:admin,根据实际需求修改。

[rtsp]下的【port】指RTSP协议使用的端口号,默认为554,根据实际需求修改。

在这里插入图片描述

(3)启动EasyDarwin服务

点击ServiceInstall-EasyDarwin.exe,安装EasyDarwin服务,出现命令提示符,加载完成后按任意键即可,这时EasyDarwin服务已经安装在【服务】中并在后台运行。

在这里插入图片描述

(4)查看Web控制台UI

打开浏览器,在地址栏输入:http://192.168.82.228,使用用户名和密码登录。

在这里插入图片描述

3.2 安装FFmpeg

(1)下载FFmpeg

从官网下载:FFmpeg Builds,将文件夹放置相应的目录中(为设置环境变量做准备),打开ffmpeg文件夹,点击bin目录,看到三个应用程序,其中ffmpeg是用来推流用的。

  • ffmpeg.exe
  • ffplay.exe
  • ffprobe.exe

ffmpeg.zeranoe.com will close on Sep 18, 2020, and all builds will be removed. If you’re using Zeranoe FFmpeg Builds in your product, please ensure that you have a hosting strategy in place by the 18th. Thank you to everyone who supported the project along the way!

在这里插入图片描述

(2)设置环境变量

打开【控制面板】——>【系统和安全】——>【系统】——>【高级系统设置】——>【环境变量】——>【系统变量】——>【Path】——>【新建】,输入(1)中bin文件夹的完整物理目录即可,最后点击【确定】。

在这里插入图片描述

3.3 使用ffmpeg推流

准备工作:在C盘中创建一个名为【Videos】的文件夹,将准备好的视频1.mp4和2.mp4移动到该目录下。

(1)推流

打开命令提示符,输入:

ffmpeg -re -i C:\Videos\1.mp4 -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://192.168.82.228/test
# 或者
ffmpeg -re -i C:\Videos\2.mp4 -rtsp_transport udp -vcodec h264 -f rtsp rtsp://192.168.82.228/test2
在这里插入图片描述

(2)配置防火墙

配置一条名为VLC 554的入站策略,选择特定端口554,TCP连接,允许任何地址连接。

在这里插入图片描述

(3)查看推流信息

打开浏览器,在地址栏输入:http://192.168.82.228,点击【推流列表】,可以看到,有一个视频正在被转发(推流)到EasyDarwin服务中。

在这里插入图片描述

3.4 使用VLC拉流

(1)在PC2中安装VLC media player,打开(此步骤较简单,故省略)。

(2)点击【媒体】——>【打开网络串流】.

在这里插入图片描述

在URL栏中输入:

rtsp://192.168.82.228/test2

最后点击播放。

在这里插入图片描述

该地址是EasyDarwin的Web控制UI的推流列表中的播放地址。

在这里插入图片描述

(3)VLC会自动从流媒体服务器中拉取数据流,经过VLC转化为视频播放。(拉流)

在这里插入图片描述

返回流媒体服务器,打开EasyDarwin的Web控制UI,在拉流列表中看到,有客户端进行视频观看,传输方式是UDP,下载流量为49.7MB。

在这里插入图片描述

至此,一套完整的流媒体服务搭建完成。流媒体服务的搭建需要良好的网络带宽,因此在测试本次实验的时候,尽量使用虚拟机内网流量,这样可以不影响物理机中的WAN流量。

4. 参考文献

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门