阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下视频流媒体服务器搭建详解

405次阅读
没有评论

共计 14787 个字符,预计需要花费 37 分钟才能阅读完成。

目标用于搭建内网流媒体服务器支持视频的点播。

背景

用于支持培训网站中视频点拨功能,在培训网站总体方案中需要加入流媒体服务器,用于存储和传输视频资源。

相关概念

  • 流媒体
    流媒体(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 协议播放

  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。

Linux 下视频流媒体服务器搭建详解

Linux 下视频流媒体服务器搭建详解

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;
        }

即可使用播放器打开远程连接。

Linux 下视频流媒体服务器搭建详解

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.linuxidc.com/Linux/2017-03/142101p2.htm

  • 使用 jwplayer 实现 http 播放

在网站上下载一个 jwplayer,解压后上传至 /var/www/html 目录,然后就可以在浏览器直接访问以 h264 编码的 mp4 文件或 flv 文件。

此方法的兼容性较好,在 IE, Chrome, Firefox, Safari 输入地址http://192.168.40.134/player.swf?type=http&file=sample_h264_100kbit.mp4,视频都可以直接打开。

效果如下图所示:

Linux 下视频流媒体服务器搭建详解

不过这样的播放方式,要求在地址栏输入一长串的地址,优雅一点的方法是写一个页面放在网站目录下,然后通过访问页面来播放嵌套其中的视频。

如下建立一个 index.html 文件。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>test of nginx-http</title>
</head>
<body>
<div id="myElement"></div>
<object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="480" height="360">
  <param name="movie" value="player.swf"/>
  <param name="quality" value="high"/>
  <param name="wmode" value="opaque"/>
  <param name="swfversion" value="6.0.65.0"/>
  <EMBED SRC="player.swf" WIDTH="480" HEIGHT="360" QUALITY="high" flashvars="type=http&file=/magicleap2.flv&autostart=true" wmode="opaque"/></object>
</body>
</html>

其中 flv 文件如果要支持拖动,需要对文件添加关键帧,方法如下:

yamdi -i magicleap.flv -o magicleap2.flv

然后通过浏览器访问这个地址http://192.168.40.134/index.html。可以看到视频实现在页面中的播放。

Linux 下视频流媒体服务器搭建详解

Nginx + RMTP 模块

  • 测试 RTMP 直播功能
    提示:测试 RTMP 功能可以参考 nginx-rtmp-module 中的 test 目录。
# 写入 nginx.conf 文件,rtmp 协议专用 1935 端口
rtmp {server {listen 1935;
        chunk_size 4000;
        application vod {play /var/www/vod; # vod file location
        }
        application live {live on;

         }
    access_log logs/rtmp_access.log; 
    }
}

在本地的 VLC 打开 rtmp 地址 rtmp://192.168.40.134/live/mystream。
在远程主机上使用 ffmpeg 命令模拟一个视频流推送给 VLC。这种推流的方式实际就是所谓的直播了。

ffmpeg -loglevel verbose -re -i /var/www/html/a_day_with_htc_vive.avi  -f flv rtmp://localhost/live/mystream

ffmpeg –i/usr/local/nginx/vod/flvs/a.flv-strict -2 -c:v libx264 -c:a aac -f flv rtmp://192.168.10.4/live/test

一旦远程主机上的转换开始,VLC 开始缓冲几秒后就会开始播放,如下图所示。

Linux 下视频流媒体服务器搭建详解

  • 在 http 模块中配置 RTMP 虚拟机 (server) 实现点播功能

实现方法是用 jwplayer 调用 rtmp 的流实现视频播放。如下 html 实现对视频的嵌入播放。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>nginx-rtmp</title>
</head>

<body>
<div id="myElement"></div>
<object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="480" height="360">
  <param name="movie" value="player.swf" />
  <param name="quality" value="high" />
  <param name="wmode" value="opaque" />
  <param name="swfversion" value="6.0.65.0" />  <EMBED SRC="player.swf" WIDTH="480" HEIGHT="360" QUALITY="high" flashvars="streamer=rtmp://192.168.40.134:1935/vod&file=magicleap2.flv&autostart=true" wmode="o
paque" />
</object>
</body>
</html>

播放效果如下:

Linux 下视频流媒体服务器搭建详解

通过这个 RTMP 流的优势是,可以避免视频文件被浏览器通过 http 方式进行下载。

视频文件存储

所有流服务器存储媒体文件的方式都是将文件放在指定目录下面,且磁盘系统绝大部分 I / O 都是读操作,写操作只会发生在上传和更新媒体文件过程中。对于这种 I / O 操作特性,建议选择 RAID 5 用于中小规模的视频点拨服务。这样可以提供比独立磁盘更高的数据安全性和读取速度,同时将成本控制在较小的范围内。实际可用容量为 (N-1) 个磁盘。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/142101.htm

目标用于搭建内网流媒体服务器支持视频的点播。

背景

用于支持培训网站中视频点拨功能,在培训网站总体方案中需要加入流媒体服务器,用于存储和传输视频资源。

相关概念

  • 流媒体
    流媒体(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 协议播放

  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。

Linux 下视频流媒体服务器搭建详解

Linux 下视频流媒体服务器搭建详解

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;
        }

即可使用播放器打开远程连接。

Linux 下视频流媒体服务器搭建详解

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.linuxidc.com/Linux/2017-03/142101p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计14787字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7994047
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...