目标用于搭建内网流媒体服务器支持视频的点播。
背景
用于支持培训网站中视频点拨功能,在培训网站总体方案中需要加入流媒体服务器,用于存储和传输视频资源。
相关概念
流媒体
流媒体(Streaming Media)是一种新兴的网络传输技术,在互联网上实时顺序地传输和播放视/音频等多媒体内容的连续时基数据流。
流媒体技术包括流媒体数据采集、视/音频编解码、存储、传输、播放等领域。
流媒体系统组成
包括编码工具、流媒体数据、服务器、网络和播放器。
流媒体传输过程
如下图所示:
\流媒体传输过程
传输协议
RSVP: 资源预留协议
RTP: 实时传输协议
RTCP: 实时传输控制协议
MMS: 微软流媒体服务协议
RTSP: 实时流协议
RTMP: 实时消息传输协议
MIME: 多目因特网电子邮件扩展协议
解决方案
商业方案
Real Network的Real System
服务端软件:Helix Server
平台:Windows or Linux
文件格式:RealAudio, Realvideo, RealFlash
微软的Windows Media Services
服务端软件:Windows Media Server
平台:Windows
文件格式:ASF, WMV
苹果公司的Quick Time系列
服务端软件:QuickTime Streaming Server (开源版本为Darwin Streaming Server)
平台:MacOS X, Linux, Windows
文件格式:MOV, MP4
三种流媒体系统比较
在这三家公司的流媒体产品中,RealNetworks公司的免费服务端Helix Server Basic最大提供个流的并发,仅支持其专有编码RealAudio和RealVideo,基本上只能算是体验性的产品;微软公司的流媒体服务端Windows Media Server附带于其服务器产品Windows Server中,但只有最高版本的Windows Server Enterprice才具有完整的包括组播在内的所有流媒体服务器功能;苹果公司的Darwin Streaming Server(简称DSS)完全免费,没有任何功能限制,且符合国际标准。
开源/免费解决方案
ffmpeg
全平台视频转换
开源
RED5
Red5是一个采用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。Red5使用RSTP作为流媒体传输协议,在其自带的一些示例中演示了在线录制,flash流媒体播放,在线聊天,视频会议等一些基本功能。
开源地址:[](https://github.com/Red5/red5-server)
Darwin Streaming Server
为苹果公司视频流解决方案的开源版本。
easyDarwin
国内基于Darwin Streaming Server二次开发的流媒体服务器,有中文支持网站。
安装配置
RED5
使用HTTP协议播放
首先从github下载已编译版本,因为在Linux上安装使用,直接下载 red5-server-1.0.7-RELEASE.tar.gz文件即可。
Java程序,在服务器上安装jre1.7版本后即可解压运行。测试阶段可以使用./red5-debug.sh启动red5服务器。在浏览器上输入http://[serverip]:5080/可以看到red5控制主页。
在red5安装目录下的webapp/vod目录下的视频文件可以在本地VLC播放器上连接http://[serverip]:5080/[filename]进行播放。
Darwin Streaming Server
功能同easyDarwin,在Linux上安装比较繁琐,所以暂时只试用easyDarwin。
easyDarwin
使用RTSP协议播放
首先从github下载源码或者已编译版本,因为上面有CentOS的已编译版本,直接下载解压即可使用。
使用root账户启动执行程序,首次启动迁移开启调试模式,./easydarwin -c ./easydarwin.xml -d。
启动后,可以在执行的从终端看到调试信息。同时使用http://[serverip]:8088可以登录,默认使用admin/admin登录。
配置界面
在Movies目录下放置一些视频文件,就可以在客户端使用播放器进行播放,我测试使用的是VLC。
连接流
播放流
Nginx + HLS
HLSHTTP Live Streaming苹果公司开放的支持html5直接播放的视频流技术。
Nginx实现http服务器功能,可以通过http访问m3u8文件实现播放。
要使用HLS播放的第一步,是将视频文件切割成多个ts视频流,然后使用m3u8索引文件进行播放。生成m3u8和ts文件可以借助ffmpeg工具,使用如下命令就可以将一般的视频文件转换成HLS支持的文件。
ffmpeg -i “G:\video\7 magic leap2.avi” -f hls “G:\video\HLR\test.m3u8”
对于大文件用上面这种方式有可能出现m3u8缺少索引的情况,因此也可以使用以下的方式对文件进行转换。
ffmpeg -i bigfile.mp4 -codec:v libx264 -codec:a aac -map 0 -f ssegment -segment_format mpegts -segment_list tos.m3u8 -segment_time 10 taste_of_shanghai%04d.ts
直接使用Nginx访问文件路径
不需要多余的软件,直接将m3u8文件所在目录设置为http server的根目录。
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# root html;
root /var/www/html;
index index.html index.htm;
}
即可使用播放器打开远程连接。
hlr_playback
Nginx + jwplayer
Nginx编译时增加mp4和flv模块,可以让Nginx支持flv和mp4格式。为了后面说明支持RMTP协议,同时在增加RTMP模块。
安装依赖包
yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel expat-devel gettext-devel libtool mhash.x86_64 perl-Digest-SHA1.x86_64
tar xzvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install
tar xzvf pcre-8.37.tar.gz
cd pcre-8.37
./configure
make
make install
tar xzvf yamdi-1.9.tar.gz
cd yamdi-1.9
./cofigure
gcc yamdi.c -o yamdi -O2 -Wall
tar xzvf openssl-1.0.1t.tar.gz
cd openssl-1.0.1t
./config
make depend
make install
安装ffmpeg以及依赖包
需要安装yasm, x264, LAME, libogg,libvorbis, libvpx, faad2, faac
# 汇编工具
# 请网络搜索安装包
unzip yasm-1.2.0-1.el6.x86_64.zip
rpm -ivh yasm-1.2.0-1.el6.x86_64.rpm
# h.264编码
# http videolan.org
tar xjvf last_x264.tar.bz2
cd x264-snapshot-20160718-2245
./configure –enable-shared
make
make install
# LAME mp3编码器
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar xzvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure –enable-nasm
make
make install
# libogg 音频编码器
wget http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz
tar xzvf libogg-1.3.2.tar.gz
cd libogg-1.3.2
./configure
make
make install
# libvorbis 音频编码器
wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz
tar xzvf libvorbis-1.3.5.tar.gz
cd libvorbis-1.3.5
./configure
make
make install
# libvpx VP8编码解码器
# 网络搜索
tar xjvf libvpx-1.5.0.tar.bz2
cd libvpx-1.5.0
./configure –enable-shared
make
make install
# FAAD2 MPEG-2和AAC格式的编解码器
wget http://downloads.sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.gz
tar xzvf faad2-2.7.tar.gz
cd faad2-2.7
./configure
make
make install
# faac AAC编解码器
wget http://downloads.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.gz
tar xzvf faac-1.28.tar.gz
cd faac-1.28
./configure
make
make install
# xvid 视频编码
wget http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz
tar zxvf xvidcore-1.3.2.tar.gz
cd xvidcore/build/generic
./configure
make
make install
# ffmpeg 转换工具
wget http://ffmpeg.org/releases/ffmpeg-3.1.1.tar.bz2
tar xjvf ffmpeg-3.1.1.tar.bz2
cd ffmpeg-3.1.1
./configure –prefix=/opt/ffmpeg/ \
–enable-version3 \
–enable-libvpx \
–enable-libfaac \
–enable-libmp3lame \
–enable-libvorbis \
–enable-libx264 \
–enable-libxvid \
–enable-shared \
–enable-gpl \
–enable-postproc \
–enable-nonfree \
–enable-avfilter \
–enable-pthreads
make
# 可以忽略编译过程中的警告信息
make install
修改/etc/ld.so.conf
inclue ld.so.conf.d/*.conf
/lib
/lib64
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
/opt/ffmpeg/lib
执行ldconfig使修改生效。
编码测试
ffmpeg -i ./a_day_with_htc_vive.avi -f hls ./htcvive.m3u8
编译Nginx
wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz
tar xzvf nginx_mod_h264_streaming-2.2.7.tar.gz
# https://github.com/arut/nginx-rtmp-module
unzip nginx-rtmp-module-master.zip
vi nginx_mod_h264_streaming-2.2.7/src/ngx_http_streaming_module.c
# 注释以下内容
/* TODO: Win32 */
if (r->zero_in_uri)
{
return NGX_DECLINED;
}
groupadd nginx
useradd nginx
usermod -G nginx nginx
tar zxf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure –prefix=/usr/local/nginx \
–add-module=/opt/video/nginx_mod_h264_streaming-2.2.7 \
–with-http_flv_module \
–with-http_ssl_module \
–with-http_mp4_module \
–with-http_gzip_static_module \
–with-http_stub_status_module \
–with-pcre=/opt/video/pcre-8.37 \
–with-zlib=/opt/video/zlib-1.2.8 \
–user=nginx –group=nginx \
–add-module=/opt/video/nginx-rtmp-module-master \
–with-cc-opt=-I/opt/ffmpeg/include \
–with-ld-opt=-L/opt/ffmpeg/lib-R/opt/ffmpeg/lib
make
make install
配置nginx.conf文件
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /var/www/html;
index index.html index.htm;
location ~ \.flv$
{
flv;
}
location ~ \.mp4$
{
mp4;
}
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
root /var/www/html;
break;
}

http://www.taodudu.cc/news/show-2717625.html

相关文章:

  • 流媒体服务器使用手册
  • Mac终端命令和连接服务器
  • Nginx、HLS、M3U8、TS 搭建手记
  • 微软流媒体服务器直播,流媒体服务器Flussonic Media Server对直播流进行录制
  • 【科普】TS文件格式:什么是TS?如何打开,编辑和转换它?
  • linux下编译ts工程,linux下搭建生成HLS所需的.ts和.m3u8文件
  • m3u8 和 ts
  • 关于视频流媒体服务器的学习记录
  • 网络流媒体(四)———TS流
  • 苹果手机的ipsec
  • 基于 HLS 创建 Golang 视频流服务器
  • 新疆苹果服务器不稳定,乌鲁木齐市民反映:苹果系统升级后自动选择新疆时区...
  • 苹果支付返回html,苹果应用内支付,服务器端的实现
  • ts获取服务器数据_ts 流服务器
  • JS——数组中去除空空字符串
  • 哦空空空iokkk
  • 空空空空空
  • 空空0515
  • SQL语句判空空段
  • 自己忙碌十年,发现空空的,该填满了
  • java空空出版社
  • 哦哦空空空空空
  • 鸿蒙试炼如何拿经验,热血精灵派空空夜夜的勇士试炼 百万经验轻松得
  • 失望时想起了你是什么歌_你是空你是空色即是空的空空什么歌 《想起了你》哪里听...
  • 空空老师向青海地震捐款~~把我感动毁了
  • 两手空空也创业 没钱照样做老板
  • 从身家500万到两手空空,看她如何再次成功翻身
  • LoRa 学习Day4 LoRa无线通信设计(二)空空距离测试
  • 孙空空的Vue之路-Day03-Class与Style的绑定操作
  • 孙空空的Vue之路-Day07-事件处理

Linux下视频流媒体服务器搭建详解理论相关推荐

  1. linux下ftp服务器搭建详解

    总体搭建流程: 1.安装vsftpd 2.配置vsftpd.conf配置文件 3.启动vsftpd服务器(安装完后默认是启动的) 4.客户端发起连接 5.传递数据(上传,下载) 6.关闭连接 详解 1 ...

  2. linux中which命令详解,Linux下which命令使用详解(转)

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. locate 配合数据库查看文件位置. f ...

  3. linux下sort命令使用详解---linux将文本文件内容加以排序命令

    转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...

  4. Linux下的awk用法详解

    Linux下的awk用法详解 一.awk介绍 二.awk的语法 三.awk常见用法 四.awk其他用法 五.awk语言特性 一.awk介绍 1.AWK 是一种处理文本文件的语言,是一个强大的文本分析工 ...

  5. linux输入一个用户看是否在工作,linux下的用户管理详解

    linux下的用户管理详解 useradd 命令详解 添加用户 想要对linux下面的帐号了解的话首先必须要了解的4个配置文件[root@localhost /]# cat /etc/passwd 首 ...

  6. Linux下find命令用法详解

    Linux下find命令用法详解 学神VIP烟火 学神IT教育:XueGod-IT 最负责任的线上直播教育平台 本文作者为VIP学员 烟火 第一部分:根据文件名查找 1.在当前目录查找名称为test的 ...

  7. linux下测试ftp传输,linux下ftp命令使用详解---linux文件传输ftp命令

    linux下ftp命令使用详解---linux文件传输ftp命令 上一篇 / 下一篇  2010-12-18 09:15:35 / 个人分类:Linux ftp(file transfer proto ...

  8. rm命令linux00,linux下rm命令使用详解 | Soo Smart!

    linux下rm命令使用详解---linux删除文件或目录命令 用户可以用rm命令删除不需要的文件.该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除 ...

  9. linux下top命令参数详解

    linux下top命令参数详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法. 内存信息.内容如下: ...

最新文章

  1. 计算机网络word文档,计算机网络word.doc
  2. C++:类-多态的学习和使用
  3. circRNA相互作用预测数据库CSCD2
  4. VTK:图片之ImageEllipsoidSource
  5. 青年节寄语和新课程免费上架
  6. python的内存管理机制及调优手段_Python的内存管理机制及调优手段?
  7. Python基础 —— dict
  8. Scikit-learn数据变换
  9. f452虚拟服务器,中兴f452网关,超级用户的密码如何获得,启动路由功能
  10. TV直播app TV版 超级直播 空壳 可玩性强 带EPG 带回看 带自定义 定制可带自定义协议等
  11. win7计算机自动关机设置在哪里设置方法,win7系统怎么设置自动关机
  12. FreeBase介绍
  13. 汉诺塔python代码解释_python求解汉诺塔游戏
  14. IDEA 前台静态文件发布不即时生效问题解决
  15. c语言单片机红外报警设计,超级简单单片机红外感应开关DIY设计
  16. WordPress丸子小程序从零到一搭建小程序[小程序配置]
  17. logback日志配置详解
  18. 适配80mm打印机网页打印自动高度问题
  19. python去除字符串中的空格、特殊字符、指定字符
  20. 关于成为网络工程师后具体的工作内容的问题

热门文章

  1. Hbase资源管理 Quotas
  2. Lipschitz连续,一致连续
  3. 一种基于STM32F1 MCU的增量型编码器测速的方法
  4. 计算机出现蓝屏怎么解决,教你电脑出现蓝屏是怎么回事
  5. 这些带斑点的蛇实在太漂亮了,盘点18种带斑点的蛇
  6. 一个软件项目如何做成本预估
  7. ubuntu nginx 安装和启动和自启动
  8. 《管理者必读12篇》如何购买
  9. 基于反步法backstepping的自适应控制简介
  10. 给了一串数字:218916754,根据下面规则可以找出扣扣号码:首先删除第一个数,紧接着将第二个数放到这串数字的末尾,再将第三个数删除,并将第四个数放到这串数字的末尾......如此循环,知道剩下最后