以下的所需的安装包,可直接在linux系统终端下载,也可从其他地方下载之后拷到对应目录下解压使用,遇到连接不到国外网站时可改变压缩包地址

1、安装依赖包:

#yum install glibc.i686
 #yum –y update
 #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   gcc-c++

2、安装git工具://新安装的软件都放在新建的softsource文件夹下
  
 #mkdir softsource
 #cd softsource
 #wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
 #tar xzvf git-latest.tar.gz 
 #cd git-2013-08-28
 #autoconf
 #./configure
 #make && make install
 # git --version
 git version 1.8.1.GIT
 #cd ..        目前直接回去rtmp目录, 没有在上一层安装FFmpeg
 
3、安装ffmpeg及其依赖包:
 ++++++++Yasm+++++++++++
 #wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
 #tar xzvf yasm-1.2.0.tar.gz
 #cd yasm-1.2.0
 #./configure
 #make
 #make install
 #cd ..
 ++++++++x264+++++++++++
 #git clone git://git.videolan.org/x264
 #cd x264
 #./configure --enable-shared 
 #make
 #make install
 #cd ..
 ++++++++LAME+++++++++++    (#wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz)
 #wget http://kakola.googlecode.com/files/lame-3.98.4.tar.gz
 (安装lame-3.98.4.tar.gz, 以免在第三步的时候出现ERROR:libmp3lame >= 3.98.3 not found错误, 需要提前安装lame.)
 #tar xzvf lame-3.98.4.tar.gz
 #cd lame-3.98.4
 #./configure --enable-nasm
 #make
 #make install
 #cd ..
 ++++++++libogg+++++++++++   
 #wget http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz
 #tar xzvf libogg-1.3.0.tar.gz
 #cd libogg-1.3.0
 #./configure
 #make
 #make install
 #cd ..
 ++++++++libvorbis+++++++++++
 #wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz
 #tar xzvf libvorbis-1.3.3.tar.gz
 #cd libvorbis-1.3.3
 #./configure
 #make
 #make install
 #cd ..
 ++++++++libvpx+++++++++++

#wget http://webm.googlecode.com/files/libvpx-v1.1.0.tar.bz2 
 #tar -vxjf libvpx-v1.1.0.tar.bz2
 #cd libvpx-v1.1.0
 #./configure  --enable-shared
 #make
 #make install
 #cd ..
 ++++++++FAAD2+++++++++++  
 #wget http://downloads.sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.gz
 #tar zxvf faad2-2.7.tar.gz
 #cd faad2-2.7
 #./configure
 #make
 #make install
 #cd ..
 ++++++++FAAC+++++++++++   #wget http://sourceforge.net/projects/faac/files/faac-src/faac-1.28/faac-1.28.tar.gz/download (http://172.16.1.100/faac-1.28.tar.gz)
 #tar zxvf faac-1.28.tar.gz
 #cd faac-1.28
 #cd common/mp4v2/
 #vi mpeg4ip.h
 126G—定位到126行后删除这一行,保持退出
 回到faac-1.28目录下:cd ..
 Cd ..
 #./configure
 #make
 #make install
 #cd ..
 ++++++++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
 #cd ..
 ++++++++ffmpeg+++++++++++

#git clone git://source.ffmpeg.org/ffmpeg
 #cd ffmpeg
 #./configure --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
 #cd ..
 ++++++++ zlib+++++++++++ 
 Wget http://www.zlib.net/zlib-1.2.8.tar.gz
 #tar xzvf zlib-1.2.8.tar.gz
 #cd zlib-1.2.8
 #./configure -prefix-/usr/local/zlib
 #make && make install

************************************************

修改/etc/ld.so.conf如下:
 include ld.so.conf.d/*.conf
 /lib
 /lib64
 /usr/lib
 /usr/lib64
 /usr/local/lib
 /usr/local/lib64
 /opt/ffmpeg/lib
 
 修改后执行
 #ldconfig
 
 
 OpenSSL
 # wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
 # tar -zxvf openssl-1.0.1c.tar.gz
 # cd openssl-1.0.1c.tar.gz
 # ./config
 # make
 # make install
 
 会出现语法错误 POD document had syntax errors at /usr/bin/pod2man line 69. Make
    解决办法:rm /usr/bin/pod2man  删除此文件(可能是因为不兼容的问题)

4. nginx安装
 # wget http://nginx.org/download/nginx-1.6.0.tar.gz
 # tar zxvf nginx-1.6.0.tar.gz
 # cd nginx-1.6.0
 4.编译安装nginx
 在nginx-1.6.0目录下新建文件:nginx_configure.sh
 然后使用gedit 打开进行编辑:

#!/bin/sh

echo "configure start ..."
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--error-log-path=/usr/local/nginx/logs/error.log \
--add-module=../nginx_mod_h264_streaming-2.2. \
--with-pcre=../pcre-8.12 \
--with-zlib=../zlib-1.2. \
--with-http_dav_module \
--with-http_flv_module \
--with-http_stub_status_module \
--without-http_scgi_module \
--without-http_uwsgi_module \
--without-http_gzip_module \
--without-http_ssi_module \
--without-http_proxy_module \
--without-http_memcached_module \
--without-http_empty_gif_module \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module \
--with-http_ssl_module \
--with-openssl=../openssl-1.0.1c \
--add-module=../nginx-rtmp-module \
--with-cc-opt=-I/opt/ffmpeg/include \ echo "configure end!"

【保存并退出】
 # chmod +x nginx_configure.sh  (此步骤执行后可能会出错 缺少什么包就添加什么包)
 # ./nginx_configure.sh
 # make
 # make install

备注:
 在执行make的时候可能出现错误1:
 adding module in ../nginx_mod_h264_streaming-2.2.7
  + ngx_http_h264_streaming_module was configured
 adding module in ../nginx-rtmp-module
  + ngx_rtmp_module was configured
 checking for OpenSSL library ... not found
  
 ./configure: error: SSL modules require the OpenSSL library.
 You can either do not enable the modules, or install the OpenSSL library
 into the system, or build the OpenSSL library statically from the source
 with nginx by using --with-openssl=<path> option.
  
 configure end!
 root@ubuntu:/home/song/nginx-t/nginx-1.6.0# make
 make: *** No rule to make target `build', needed by `default'.  Stop.
  
 解决方法:
 a)可以安装ssl
 apt-get install openssl
 apt-get install libssl-devel
 (ubuntu下的命令 centos下用yum -y install openssl openssl-devel)
 b)也可以添加
 --with-openssl=<path>
 在执行make的时候可能出现错误2:
 /root/nginx_mod_h264_streaming-2.2.7/src/ngx_http_streaming_module.c: In function ‘ngx_streaming_handler’:
  
 /root/nginx_mod_h264_streaming-2.2.7/src/ngx_http_streaming_module.c:158: error: ‘ngx_http_request_t’ has no member named ‘zero_in_uri’
  
 make[1]: *** [objs/addon/src/ngx_http_h264_streaming_module.o] Error 1
  
 make[1]: Leaving directory `/root/nginx-0.8.54'
  
 make: *** [build] Error 2
  
 解决方法:在nginx_mod_h264_streaming-2.2.7中修改
 那么将src/ngx_http_streaming_module.c文件中以下代码删除或者是注释掉就可以了:
 /* TODO: Win32 */
 if (r->zero_in_uri)
 {
 return NGX_DECLINED;
 }
  
 在执行make的时候可能出现错误3:
 ../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c: 在函数‘esds_read’中:
 ../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:377:16: 错误: 变量‘stream_priority’被设定但未被使用 [-Werror=unused-but-set-variable]
 ../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:376:12: 错误: 变量‘stream_id’被设定但未被使用 [-Werror=unused-but-set-variable]
 ../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c: 在函数‘stsd_parse_vide’中:
 ../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:529:22: 错误: 变量‘level_indication’被设定但未被使用 [-Werror=unused-but-set-variable]
 ../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:528:22: 错误: 变量‘profile_compatibility’被设定但未被使用 [-Werror=unused-but-set-variable]
 ../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:527:22: 错误: 变量‘profile_indication’被设定但未被使用 [-Werror=unused-but-set-variable]
 ../nginx_mod_h264_streaming-2.2.7/src/mp4_reader.c:526:22: 错误: 变量‘configuration_version’被设定但未被使用 [-Werror=unused-but-set-variable]
 cc1: all warnings being treated as errors
 make[1]: *** [objs/addon/src/mp4_reader.o] 错误 1
  
 解决方法:在nginx的安装目录
 # vim objs/Makefile (修改objs/Makefile文件, 去掉其中的"-Werror"), 然后就能够正常编译了.
 然后在make就能过了。
 
 
 安装过程中又下载了nginx_mod_h264_streaming-2.2.7   pcre-8.12  两个文件放入softsource文件夹中
 
 
******************************************
5、配置Nginx相关模块
 1、安装好了之后终端进入 nginx安装的目录 : /usr/local/nginx/html/
 然后新建目录:nginx-rtmp-module   (新建的命令为 mkdir nginx-rtmp-module)
 然后拷贝 之前用于存放下载 nginx 所需资源包的目录 :/root/nginx/nginx-rtmp-module/
 拷贝 目录 test 到/usr/local/nginx/html/ 目录下:
 # cp /root/nginx-rtmp-module/test /usr/local/nginx/html/nginx-rtmp-module/
 # cp /root/nginx-rtmp-module/stat.xsl /usr/local/nginx/html/nginx-rtmp-module/
 拷贝的时候 会报错因为 test文件是个文件夹所以 需要递归拷贝 在cp后边加上-r就可以了
 2.
 拷贝之后就需要修改 /usr/local/nginx/nginx.conf 
 nginx.conf  配置文件已经配好!(也可直接把rtmp那一块的配置直接拷贝到原来的nginx.conf文件中,这样就不需要太多的配置)

    #user  nobody;
worker_processes ; #error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info; pid logs/nginx.pid;
worker_rlimit_nofile ; events {
use epoll;
worker_connections ;
} #切换自动推送(多 worker 直播流)模式。默认为 off
rtmp_auto_push on; #当 worker 被干掉时设置自动推送连接超时时间。默认为 毫秒
rtmp_auto_push_reconnect 1s; #设置用于流推送的 UNIX 域套接字目录。默认为 /tmp
#rtmp_socket_dir /var/sock; rtmp {
server {
listen ; #点播配置
application vod {
play /opt/media/nginxrtmp/flv;
} #直播流配置
application live {
live on;
#为 rtmp 引擎设置最大连接数。默认为 off
max_connections ; # default recorder
record all;
record_path /var/rec; recorder audio {
record audio;
record_suffix -%d-%b-%y-%T.flv;
} recorder chunked {
record all;
record_interval 15s;
record_path /var/rec/chunked;
} #on_publish http://localhost:8080/publish;
#on_play http://localhost:8080/play;
#on_record_done http://localhost:8080/record_done; #rtmp日志设置
#access_log logs/rtmp_access.log new;
#access_log logs/rtmp_access.log;
#access_log off; } #HLS协议支持
#application hls {
#live on;
#hls on;
#hls_path /tmp/app;
#hls_fragment 5s;
#} application hls{ live on;
hls on;
hls_path /usr/local/nginx/html/app;
hls_fragment 1s;
} }
} http {
include mime.types;
default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout ;
keepalive_timeout ; #gzip on; server {
listen ;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #location / {
# root html;
# index index.html index.htm;
#} #error_page /.html; # redirect server error pages to the static page /50x.html
#
error_page /50x.html;
location = /50x.html {
root html;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#} # deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#} location /rtmp-publisher {
root /root/nginx/nginx-rtmp-module/test;
} #location /hls {
#server hls fragments
#types{
#application/vnd.apple.mpegurl m3u8;
#video/mp2t ts;
#} #alias /usr/local/nginx/html;
#expires -;
#} location /hls {
#server hls fragments
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
} #alias /usr/local/nginx/html/app;
alias /usr/local/nginx/html;
expires -;
} location / {
#root /root/nginx/nginx-rtmp-module/test/rtmp-publisher;
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
} root /usr/local/nginx/html/rtmp-publisher;
expires -;
} } # another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen ;
# listen somename:;
# server_name somename alias another.alias; # location / {
# root html;
# index index.html index.htm;
# }
#} # HTTPS server
#
#server {
# listen ;
# server_name localhost; # ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key; # ssl_session_timeout 5m; # ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on; # location / {
# root html;
# index index.html index.htm;
# }
#} #支持flv
server
{
listen ;
server_name localhost;
#root /opt/pub/media/nginx; #http协议时候,flv视频位置
#root /root/nginx/nginx-rtmp-module/test/www;
root /usr/local/nginx/html/www; location ~ .*.(flv|swf|mp4|wma|wmv)$ {
valid_referers none blocked *.xxxx.com http://localhost;
if ($invalid_referer) {
return ;
}
}
location ~ \.flv$ {
flv;
#limit_conn one ;#限制客户端并发连接数
limit_rate 200k;#限制每客户端最大带宽
}
location ~ \.mp4$ {
flv;
#limit_conn one ;
limit_rate 200k;
}
#access_log logs/nginxflv_access.log main;
} server
{
listen ;
server_name localhost;
index index.html;
location / {
#root /opt/pub/media/nginx-rtmp;
root /root/nginx/nginx-rtmp-module/test/rtmp-publisher;
}
#access_log logs/nginxrtmpflv_access.log main;
} server {
listen ;
server_name localhost;
index player.html; location /stat {
rtmp_stat all;
rtmp_stat_stylesheet /root/nginx/nginx-rtmp-module/stat.xsl;
}
location /stat.xsl {
root /root/nginx/nginx-rtmp-module;
} location /rtmp-publisher {
root /usr/local/nginx/html/test/rtmp-publisher;
} location / {
root /root/nginx/nginx-rtmp-module/test/rtmp-publisher;
}
} }

如果出现端口 wait_CLOSE
 就在 /etc/sysctl.conf中添加
 net.ipv4.tcp_tw_reuse=1
 net.ipv4.tcp_tw_recycle=1
 然后让配置生效
 /sbin/sysctl -p
 (以上的命令都是在根目录执行的)
 
6、根据nginx的配置文件的中的配置设置端口号  (此步骤 暂不清楚   不过可以直接将防火墙全部关闭,service firewalld stop)
 #vi /etc/sysconfig/iptables   (此文件可以自己创建然后在网上找相关的代码拷进去)
 开放8081端口  (进入nginx的nginx.conf中设置端口为8081)
 #/sbin/service iptables restart 
 重启防火墙,设置生效
 修改防火墙配置文件,所在目录/etc/sysconfig/iptables,在里面增加需要开通的端口号,如下:
 1
 2 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 8088 -j ACCEPT
 #增加的代码必须放在以下代码之上,否则不会起作用.
 1
 2 -A INPUT -j REJECT --reject-with icmp-host-prohibited 
 -A FORWARD -j REJECT --reject-with icmp-host-prohibite
 
7、 启动nginx后测试

(如果没有nginx文件夹中没有sbin文件那么可以直接进入nginx文件夹
 使用 ./nginx 启动nginx 
      ./nginx -t 测试是否配置成功
   ./nginx -s reload 重启nginx)

启动命令:
/usr/local/nginx/nginx  -c /usr/local/nginx/nginx.conf  (能保证rtmp正常运行)

启动命令其实就用
 进入#usr/local/nginx/sbin/下   ./nginx 就可以
 
 启动nginx的帮助文档:
 #/usr/local/nginx/sbin/nginx -h
 #/usr/local/nginx/sbin/nginx –s reload
 查看nginx的配置是否正确:
 #usr/local/nginx/sbin/nginx –t/
 如果配置是正确的会显示如下内容:
 Nginx.conf syntax is ok.
 Nginx.conf test is successful.
 
 配置成功后使用ffmpeg进行推流
 
 (转发凤凰卫视的直播地址)ffmpeg -re -i rtmp:/live.hkstv.hk.lxdns.com/live/hks -c:a aac -ac 1 -strict -2 -b:a 64k -c:v libx264 -f flv rtmp://192.168.1.75/live/stream

(标准地址格式)ffmpeg -re -i /root/softsource/960x720_30fps.mp4 -f flv rtmp://192.168.1.59/live/stream

Linux centOS下搭建RTMP服务器的具体步骤的更多相关文章

  1. linux Centos下搭建gitolite服务器

    1.安装git sudo yum install git -y 2.添加git管理账号 sudo adduser git 3.将gitolite克隆到本地,并安装 sudo mkdir /var/gi ...

  2. Windows和Linux环境下搭建SVN服务器

    --------------------------Windows下搭建SVN服务器----------------------------- 一.安装SVN服务端 软件包Setup-Subversi ...

  3. Centos下搭建ftp服务器

    完全不用那么麻烦,直接可以用xshell中自带的传输文件功能,下载客户端xftp安装就行,不用配置,可以在windows系统向Linux系统的任何文件地方上传下载文件,简单方便,大大节约时间, vsf ...

  4. CentOS 下搭建FTP服务器

    vsftpd是Linux下比较著名的FTP服务器,搭建FTP服务器当然首选这个.本文介绍了在CentOS 6 4下安装vsftpd.配置虚拟用户登录FTP的过程.正 vsftpd是Linux下比较著名 ...

  5. Linux系统下搭建DNS服务器——DNS原理总结

    2017-01-07 整理 DNS原理 域名到IP地址的解析过程 IP地址到域名的反向域名解析过程 抓包分析DNS报文和具体解析过程 DNS服务器搭建和配置 这个东东也是今年博主参见校招的时候被很多公 ...

  6. linux环境下搭建osm_web服务器一(Postgresql配置及osm2pgsql原始数据导入):

    Postgresql配置及osm2pgsql原始数据导入 2012年,Ubuntu 12.04LTS发布,又一个长效支持版,我们又该更新OpenStreetMap服务器了,这次,将详细在博客中记录配置 ...

  7. linux环境下搭建solr服务器--单机版

    前提需要在安装好jdk和tomcat,本人用的是jdk1.8+tomcat8.5+solr4.10. 第一步:安装linux.jdk.tomcat.(这步都是比较简单的,就不多说了) 第二步:把sol ...

  8. Linux -- Centos 下配置LNAMP 服务器环境

    1.Mysql centos 7 下mysql被替换掉,如有需要请看另一篇: centos 6.5下: yum install mysql mysql-server mysql-devel 启动mys ...

  9. linux环境下搭建osm_web服务器三(Openlays和slippymap):

    Openlays和slippymap 上一步,我们已经有了自己的地图瓦片服务器,现在,开始实现SlippyMap啦! <1>下载释放OpenLayers到 www文件夹 SlippyMap ...

随机推荐

  1. Android 调用系统联系人界面的添加联系人,添加已有联系人,编辑和修改。

    一.添加联系人 Intent addIntent = new Intent(Intent.ACTION_INSERT,Uri.withAppendedPath(Uri.parse("cont ...

  2. 二模15day1解题报告

    T1.合并序列(minval) 给出长为 n的AB两个序列求两两相加中最小的n个. 据说有证明(在蓝书上,优先队列部分)先把A[1~n]+b[1]入队,然后每取一个a[x]+b[y]就把a[x]+b[ ...

  3. iptables日志探秘

    iptables日志探秘 防火墙的主要功能除了其本身能进行有效控制网络访问之外,还有一个很重要的功能就是能清晰地记录网络上的访问,并自动生成日志进行保存.虽然日志格式会因防火墙厂商的不同而形态各异,但 ...

  4. 2016-11-02: boost::enable_shared_from_this

    使用场景 当类对象被shared_ptr管理时,需要在类自己定义的函数中把当前对象作为参数传递给其他函数时,必须传递一个shared_ptr,否则就不能保持shared_ptr管理这个类对象的语义.因 ...

  5. backup2

    /// <summary> /// 先在窗体上添加LicenceControl控件 /// Enable 3D analysis /// </summary> public v ...

  6. 表中排序ID断开重排

    客户需要排序ID和页面的问题序号一致,以前删除过一些问题导致order_id 中间有些断开的. 业务表 T_QUESTION order_id question_id  custom_id --1.创 ...

  7. Chrome 浏览器提示adobe flash player不是最新版本

    百度下载最新版. 刷新 Chrome浏览器.更换其他的浏览器. 刷新过后,无效. 打开Flash Player 检查安装的版本. IE会链接到官网. 对应自己的系统.找到自己用的浏览器.看是否一致. ...

  8. 史上最强大的40多个纯CSS绘制的图形

    Square(正方形) #square { width: 100px; height: 100px; background: red; } Rectangle(矩形) #rectangle { wid ...

  9. log4j输出模板

    log4j.rootLogger=DEBUG, A1,A2 log4j.appender.A1.MaxFileSize=1kb#10个备份 log4j.appender.A1.MaxBackupInd ...

  10. Mysql技术内幕(第四版)读书笔记(一)

    题记:写代码已经有2年了,学到了很多知识,但是没有一个好习惯去记录,去分享,好多知识点都会忘记,所以从今天开始学着像大牛一样去记录自己经历项目的点点滴滴,先从最近读<Mysql技术内幕>开 ...