再项目中需要用到简单的视频播放,想着干脆搭建一个流媒体服务器,后期做视频点播 直播包括视频服务器的负载,所以索性开始自己探索搭建视频流媒体服务器,用于存储和传输视频资源

相关概念

  • 流媒体
    流媒体(Streaming Media)是一种新兴的网络传输技术,在互联网上实时顺序地传输和播放视/音频等多媒体内容的连续时基数据流。

流媒体技术包括流媒体数据采集、视/音频编解码、存储、传输、播放等领域。

  • 流媒体系统组成
    包括编码工具、流媒体数据、服务器、网络和播放器。
  • 流媒体传输过程
    如下图所示:

 

  • 传输协议
    RSVP: 资源预留协议
    RTP: 实时传输协议
    RTCP: 实时传输控制协议
    MMS: 微软流媒体服务协议
    RTSP: 实时流协议
    RTMP: 实时消息传输协议
    MIME: 多目因特网电子邮件扩展协议
  • 做了一个简单的介绍 第一次搭建其实不需要整个流程都搭建下来,先搭建视频服务器这个也是关键的一步,剩下的编码工具啊等等可以后期再视频服务器的基础上根据需求自己选择是否安装,安装哪种

解决方案

商业方案

  • Real Network的Real System
  1. 服务端软件:Helix Server
  2. 平台:Windows or Linux
  3. 文件格式:RealAudio, Realvideo, RealFlash
  • 微软的Windows Media Services
  1. 服务端软件:Windows Media Server
  2. 平台:Windows
  3. 文件格式:ASF, WMV
  • 苹果公司的Quick Time系列
  1. 服务端软件:QuickTime Streaming Server (开源版本为Darwin Streaming Server)
  2. 平台:MacOS X, Linux, Windows
  3. 文件格式:MOV, MP4
  • 在这三家公司的流媒体产品中,RealNetworks公司的免费服务端Helix Server Basic最大提供个流的并发,仅支持其专有编码RealAudio和RealVideo,基本上只能算是体验性的产品;微软公司的流媒体服务端Windows Media Server附带于其服务器产品Windows Server中,但只有最高版本的Windows Server Enterprice才具有完整的包括组播在内的所有流媒体服务器功能;苹果公司的Darwin Streaming Server(简称DSS)完全免费,没有任何功能限制,且符合国际标准。

开源/免费解决方案

  • ffmpeg
  1. 全平台视频转换
  2. 开源
  • RED5
  1. Red5是一个采用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。Red5使用RSTP作为流媒体传输协议,在其自带的一些示例中演示了在线录制,flash流媒体播放,在线聊天,视频会议等一些基本功能。
  2. 开源地址:[](https://github.com/Red5/red5-server)
  • Darwin Streaming Server
为苹果公司视频流解决方案的开源版本。
  • easyDarwin
国内基于Darwin Streaming Server二次开发的流媒体服务器,有中文支持网站。

安装配置

RED5

使用HTTP协议播放

  1. 首先从github下载已编译版本,因为在Linux上安装使用,直接下载 red5-server-1.0.7-RELEASE.tar.gz文件即可。
  2. Java程序,在服务器上安装jre1.7版本后即可解压运行。测试阶段可以使用./red5-debug.sh启动red5服务器。在浏览器上输入http://[serverip]:5080/可以看到red5控制主页。
  3. 在red5安装目录下的webapp/vod目录下的视频文件可以在本地VLC播放器上连接http://[serverip]:5080/[filename]进行播放。

Darwin Streaming Server

功能同easyDarwin,在Linux上安装比较繁琐,所以暂时只试用easyDarwin。

easyDarwin

使用RTSP协议播放

  1. 首先从github下载源码或者已编译版本,因为上面有CentOS已编译版本,直接下载解压即可使用。
  2. 使用root账户启动执行程序,首次启动迁移开启调试模式,./easydarwin -c ./easydarwin.xml -d
  3. 启动后,可以在执行的从终端看到调试信息。同时使用http://[serverip]:8088可以登录,默认使用admin/admin登录。
  4. 在Movies目录下放置一些视频文件,就可以在客户端使用播放器进行播放,我测试使用的是VLC。

java 流媒体 框架 流媒体服务器框架_ffmpeg的介绍和安装

java 流媒体 框架 流媒体服务器框架_java 流媒体 框架_02

这个是以前的版本,再我自己试过以后,EasyDarwin现在有了最新的版本,不需要gcc编译,直接下载好压缩包,解压以后运行start.sh脚本就可以

下载地址:https://github.com/EasyDarwin/EasyDarwin

下载地址上也有详细的安装步骤,按着这个来就行

如图所示:

java 流媒体 框架 流媒体服务器框架_流媒体服务器_03

点击下载以后再linux服务器中解压;使用命令  tar zxvf EasyDarwin-linux-8.1.0-1901141151.tar.gz

进入解压好的文件:cd EasyDarwin-linux-8.1.0-1901141151

java 流媒体 框架 流媒体服务器框架_ffmpeg的介绍和安装_04

直接运行./start.sh就可让视频服务器运行起来(有些网站上说安装easydarein需要编译啊啥的,因为他们是以前的版本,您要是不嫌烦也可以在github上找到以前的版本,安装好gcc开始编译安装,现在最新版本已经将启动脚本都写好了,我还自己写了一份也是醉了)

接下来您会看到:

java 流媒体 框架 流媒体服务器框架_流媒体服务器_05

这就是说明启动成功了

但是由于easydarwin的后台界面默认的端口号是10008,您直接访问http://ip/10008的时候如果10008端口不开的话,需要查看端口是否开放,使用这个命令

netstat -nupl (UDP类型的端口)
netstat -ntpl (TCP类型的端口)

 

a 表示所有

n表示不查询dns

t表示tcp协议

u表示udp协议

p表示查询占用的程序

l表示查询正在监听的程序

如果您用的是centos6的话防火墙还是iptables  如果是centos7的话防火墙就是firewall  这个注意

我使用的是centos7,用的是firewall

  • 我们可以输入命令查看防火墙的状态;
    firewall-cmd --state  ;

    java 流媒体 框架 流媒体服务器框架_easydarwin搭建_06

  • 如果上一步处于关闭状态,输入命令:
    systemctl start firewalld.service;

    java 流媒体 框架 流媒体服务器框架_easydarwin搭建_07

  • 开启10008端口,输入命令:
    firewall-cmd --zone=public --add-port=10008/tcp --permanent;

    java 流媒体 框架 流媒体服务器框架_Server_08

  • 让我们来解释一下上一个命令:
    --zone=public:表示作用域为公共的;
    --add-port=10008/tcp:添加tcp协议的端口8080;
    --permanent:永久生效,如果没有此参数,则只能维持当前服务生命周期内,重新启动后失效;

    java 流媒体 框架 流媒体服务器框架_java 流媒体 框架_09

  • 输入命令重启防火墙;
    systemctl restart firewalld.service;

    java 流媒体 框架 流媒体服务器框架_easydarwin搭建_10

  • 输入命令重新载入配置;
    firewall-cmd --reload;

    java 流媒体 框架 流媒体服务器框架_Server_11

  • 然后你访问http://ip/10008就可以访问到easydarwin的后台系统
  • 这就搭建好了 视频服务器,如果您是简单的实现视频播放可以通过ffmpeg将本地的视频推流到您自己的视频服务器上
  • >ffmpeg -re -i C:\phpStudys\WWW\video\douying.MP4 -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://ip/test
  • 也许会报错 :
  • 说明您没有在本地电脑安装ffmpeg
  • FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec。
    该程序只有命令行模式,因此安装到Windows下时,它与一般安装程序不同,具体安装步骤如下:
    一、FFmpeg下载:http://ffmpeg.zeranoe.com/builds/你可以根据自己的操作系统选择下载最新的32位或64位静态程序版本:

    java 流媒体 框架 流媒体服务器框架_Server_12

    二、下载并解压FFmpeg文件夹,它会生成一个类似名为“ffmpeg-20150504-git-eb9fb50-win32-static”的新文件夹:
     

    java 流媒体 框架 流媒体服务器框架_ffmpeg的介绍和安装_13

     
    三、打开你想安装的任意磁盘,例如:d盘。新建一个名为“ffmpeg”的文件夹,将第二步解压生成的文件夹中的内容全部拷贝到“ffmpeg”文件夹中:
     

    java 流媒体 框架 流媒体服务器框架_Server_14

     
    四、配置FFmpeg环境变量。
    1、点击“开始菜单”,再点击“控制面板”,再点击“系统与安全”,再点击“系统”,然后点击“高级系统设置”,跳出“系统属性”窗口后,最后点击“环境变量”按钮:
     

    java 流媒体 框架 流媒体服务器框架_Server_15

     
    2、点击“环境变量”按钮后,跳出“环境变量”窗口,找到并选中“Path”变量,点击编辑:
     

    java 流媒体 框架 流媒体服务器框架_easydarwin搭建_16

     
    3、在“Path”变量原有变量值内容上加上“;d:\ffmpeg\bin”(注:;代表间隔,不可遗漏;d:\ffmpeg\bin代表FFmpeg的安装路径下的bin文件夹),一路点击“确定”即可。
     

    java 流媒体 框架 流媒体服务器框架_Server_17

     
    五、打开命令提示符窗口。输入命令“ffmpeg  –version”。如果命令提示窗口返回FFmpeg的版本信息,那么就说明安装成功了,你可以在命令提示行中任意文件夹下运行FFmpeg。
     

    java 流媒体 框架 流媒体服务器框架_Server_18

     
    六、使用FFmpeg。你需要使用命令才能够使用FFmpeg。具体资料自行查询。

这样就可以通过ffmpeg来推流了,还有一个办法就是通过ftp将您现有的视频直接放到服务器easydarwin的解压文件中的image文件夹下

java 流媒体 框架 流媒体服务器框架_ffmpeg的介绍和安装_19

视频地址就是:http://ip:10008/images/shiping.MP

今天先分享到这里  以后我陆陆续续 会添加上来,如果各位亲有好的想法可以一起完善  一起学习