Linux下使用Nginx结合ffmpeg搭建流媒体服务器

写在前面

此文章用于记录本人在搭建流媒体服务器时的遇到的问题。开头可能会有大量废话,不想看废话的看官请直接移步到动手操作一节。

系统环境

此文章内涉及的所有操作均在虚拟机上经过验证,虚拟机系统为CentOS 7.

实现功能

既然文章的标题说道是流媒体服务器,那么这个流媒体服务器能干嘛?首先,我承认这个所谓的流媒体服务器功能并不全,但它确实是推送的流媒体数据,所以各位看官还不能说我是标题党。此方案能实现的功能如下:

  • 在浏览器中播放RTMP直播源
  • 用RTMP协议点播服务器视频(不可拖动播放)

众所周知,不可拖动播放的点播根本毫无意义,这里只是顺便记录一下而已。

刨根问底

推/拉流

推流和拉流是相对的,对于同一条数据流,如果关注的对象不同,说法也不同。比如现在你用手机在B站上看LOL直播,你的手机和B站服务器之间的数据流,对于你的手机而言是拉流,对于B站的服务器而言则是推流。下文中所有的数据流均以流媒体服务器为关注对象。

H5如何播放RTMP直播源

首先这里要明确一点,HTML5中的Video标签不能直接播放rtmp数据源。这里就需要用到B站开源的一个叫flv.js的前端库,是的,你没有看错,确实是B站开源的,这里的B站确实你认识的那个小破站。看样子B站的98亿应该是还没花完,小破站牛批!

它的工作原理是将 FLV 文件流转码复用成 ISO BMFF(MP4 碎片)片段,然后通过 Media Source Extensions 将 MP4 片段喂进浏览器。

flv.js的使用和介绍
所以作为流媒体服务器这里需要将rtmp视频流转成flv视频流再推出去。时序图如下:
直播时序图

服务器需要准备什么

由上文可以看出,服务器需要做两件事情:
1.利用rtmp协议进行推/拉流
这里采用Nginx和它的一个插件nginx-rtmp-module来实现,由于要使用插件所以必须要用编译的方式重新安装Nginx。如果你的服务器已经装了Nginx,由于插件不能动态增减,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值