Ubuntu下编译Nginx的RTMP直播模块

首先获得nginx的源码,终端下输入

mkdir work && cd work
sudo apt-get update
sudo apt-get install -y dpkg-dev
sudo apt-get source nginx

这样会在该目录下下载好nginx的源码,然后是下载nginx-rtmp-module的源码:

git clone https://github.com/arut/nginx-rtmp-module.git

我获得的nginx的版本是1.4.6,这样会创建一个目录名为nginx-1.4.6的文件夹,进入这个文件夹然后安装依赖包:

cd nginx-1.4.6/
sudo apt-get build-dep nginx

修改debian/rules文件,添加我们要编译的nginx-rtmp-module的路径: 在config.status.full: config.env.full后添加:

config.status.full: config.env.full
      cd $(BUILDDIR_full) && ./configure  \
          $(common_configure_flags) \
          --with-http_addition_module \
          --with-http_dav_module \
          --with-http_geoip_module \
          --with-http_gzip_static_module \
          --with-http_image_filter_module \
          --with-http_spdy_module \
          --with-http_sub_module \
          --with-http_xslt_module \
          --with-mail \
          --with-mail_ssl_module \
          --add-module=$(MODULESDIR)/nginx-auth-pam \
          --add-module=$(MODULESDIR)/nginx-dav-ext-module \
          --add-module=$(MODULESDIR)/nginx-echo \
          --add-module=$(MODULESDIR)/nginx-upstream-fair \
          --add-module=$(MODULESDIR)/ngx_http_substitutions_filter_module \
          --add-module=/home/vagrant/work/nginx-rtmp-module \
          >$@
      touch $@

注意结束的”\”,不要忘了。

接下来就是重建nginx软件包了:

sudo dpkg-buildpackage -b

等重建完之后会在上级目录生成一堆deb的软件包。如下图所示: debfiles 接下来直接安装就好了:

sudo dpkg -i nginx-full_1.4.6-1ubuntu3.5_amd64.deb
 nginx-core_1.4.6-1ubuntu3.5_amd64.deb
  nginx_1.4.6-1ubuntu3.5_all.deb

至此,nginx已编译安装完成,下来就是配置了,打开nginx.conf文件:在底下加入:

rtmp {

    server {

        listen 1935;

        chunk_size 4000;

        #HLS

        # For HLS to work please create a directory in tmpfs (/tmp/app here)
        # for the fragments. The directory contents is served via HTTP (see
        # http{} section in config)
        #
        # Incoming stream must be in H264/AAC. For iPhones use baseline H264
        # profile (see ffmpeg example).
        # This example creates RTMP stream from movie ready for HLS:
        #
        # ffmpeg -loglevel verbose -re -i movie.avi  -vcodec libx264
        #    -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1
        #    -f flv rtmp://localhost:1935/hls/movie
        #
        # If you need to transcode live stream use 'exec' feature.
        #
        application hls {
            live on;
            hls on;
            hls_path /usr/share/nginx/html/hls;
            hls_fragment 5s;
        }
    }
}

修改虚拟主机配置文件:

sudo vim /etc/nginx/sites-enabled/default

在server块中加入:

location /hls {

              types {

                  application/vnd.apple.mpegurl m3u8;

                  video/mp2t ts;

              }

              root /usr/share/nginx/html/;

              add_header Cache-Control no-cache;

  }

创建目录:

sudo mkdir /usr/share/nginx/html/hls

重启nginx:

sudo /etc/init.d/nginx restart

至此,全部完成,下面就可以测试了,我使用的是ffmpeg来推流的:

ffmpeg -re -i ~/TestFiles/test.flv  -vcodec copy -acodec
 copy -f flv rtmp://192.168.33.11:1935/hls/mystream

这样,就可以使用VLC等播放器来播放直播视频了.如下图: rtmpClientDemo 哈哈,没错,就是乔帮主的视频~~~。 接下来试试用iOS来写个直播视频客户端然后转发到服务器,毕竟要让新到手的MBP物尽其用嘛哈哈哈。

Ubuntu下编译Nginx的RTMP直播模块》上有3条评论

  1. x

    请教一下,(1)通过sudo dpkg-buildpackage -b打包以后,安装那些nginx-full nginx-core nginx包以后是不是就相当于在使用apt 从源里面安装是一样的!(2)module=/home/vagrant/work/nginx-rtmp-module 打包以后这个是不是就可以删除了?

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注