ubuntu 14 x86_64 nginx rtmp ffmpeg 在线直播和点播

1、虚拟机安装 Ubuntu 14 x86_64 desktop

2、安装vim,openssh-server(应该是自动开启端口)。

3、安装开发环境:点击打开链接,这篇文章的开始有。

4、安装ffmpeg(静态安装),这里是英文源网:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu,按照步骤来就好(在安装的时候建议全部用开源库安装,而不是apt-get,因为我自己是这么做的,没问题)。

安完之后是这样的:


5、切换到这个路径下有一些自带的例程,可以用make来编译:



然后可能会提示如下错误:



在/etc/profile中加入环境变量:

export C_INCLUDE_PATH=/root/ffmpeg_build/include
export LD_LIBRARY_PATH=/root/ffmpeg_huild/lib
export LIBRARY_PATH=/root/ffmpeg_huild/lib
export PKG_CONFIG_PATH=/root/ffmpeg_build/lib/pkgconfig:$PKG_CONFIG_PATH
export PATH=$PATH:/root/bin

然后source一下。

然后应该就能make了。

然后就有一些可执行文件了:



当然直接使用ffmpeg的shell命令也是可以的。


6、安装 nginx 服务器,配置rtmp模块:

英文源网:点击打开链接,安装到这一步就行了,因为我们已经安装好了ffmpeg


成功启动的话是这样的:



7、先用推流rtmp工具 FMLE来进行推流测试:

这里为了测试,我们先修改一下 /usr/local/nginx/conf/nginx.conf

在末尾追加:

rtmp {  
    server {  
        listen 1935;  
  
        application myapp {  
            live on;  
        }  
        application hls {  
            live on;  
            hls on;  
            hls_path /tmp/hls;  
        }  
    }  
}


添加一个location:

location /hls {  
            types {  
                application/vnd.apple.mpegurl m3u8;  
                video/mp2t ts;  
            }  
            root /tmp;  
            add_header Cache-Control no-cache;  
}


然后重启一下nginx:


8、这里我们下载一个推流工具 FLME:点击打开链接

安装完之后,可以读到摄像头的内容:



然后在 FMS URL:填写要推流的应用地址,这里我的是:rtmp://192.168.241.151:1935/myapp,这个myapp就是之前在 nginx.conf配置文件中配置的应用名,然后在 Stream写上 test1也就是推流的应用的地址。然后点击start也就是开始推流。当然你可以先测试一下连接,就是Connect这个选项




这样就开始往 nginx 服务器上推流了。


9、这时我们可以用web应用来接收rtmp流数据,这里是项目代码:点击打开链接

解压之后直接放到 主机tomcat 的webapps下就行了,启动tomcat,执行应用:




10、上面是使用FMLE推流软件直接推送读取的摄像头视频,现在我们使用ffmpeg进行转码推流:

ffmpeg -re -i "/opt/1.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://localhost:1935/myapp/test1

这里待推流视频是1.mp4这个文件,转码成flv格式后推给指定的rtmp地址,其他的地方不用改,同样是能在主机tomcat服务器上获取rtmp视频流:



11、点播功能:在编译nginx的时候,加入对flv的支持:

./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master --with-http_flv_module
然后在nginx.conf配置文件的server节点加入一些配置信息:

 listen       80;
        server_name  localhost;
        root    /usr/local/nginx/html/flv_file/;
        index   index.html;
        charset utf-8;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        limit_rate_after 10m;
        limit_rate 512k;
        location / {
            root   html;
            index  index.html index.htm;
        }
        location ~ \.flv {
            flv;
        }

然后,我们把flv格式的文件放在 /usr/local/nginx/html/flv_file/ 这个目录下,最后我们同样使用之前的项目里面的非rtmp流获取的方式播放该http上的文件(第二个html文件),访问地址是http://IP/*.flv,我这里用ffmpeg转码得到的flv文件貌似不用再加时间戳了。如果是其他的flv文件,可能需要加关键帧信息才能实现播放控制,用yamdi这个工具。





你可能感兴趣的:(ubuntu 14 x86_64 nginx rtmp ffmpeg 在线直播和点播)