基于ffmpeg和rmtp协议实现在线直播

1.安装ffmpeg

	*所需安装包:*
	lame-3.100.tar.gz
	链接:https://pan.baidu.com/s/1nKp7T7QiNYQ4tj7U4HAXCQ 
	提取码:4l5j 
	yasm-1.3.0.tar.gz
	链接:https://pan.baidu.com/s/1DBo2KAvzFgmQaHvjXqCJAQ 
	提取码:16eu 
	nasm-2.13.03.tar.gz
	链接:https://pan.baidu.com/s/1Zt5VXnLn4Q5DM-1D_khsyA 
	提取码:iofv 
	x264.zip
	链接:https://pan.baidu.com/s/1eLNwuEV2RlCxRVKbVgo50w 
	提取码:wn78 
	ffmpeg-4.1.tar.bz2
	链接:https://pan.baidu.com/s/1eLNwuEV2RlCxRVKbVgo50w 
	提取码:wn78 
	
	2.编译安装
		安装lame
		tar -zxf lame-3.100.tar.gz
		cd lame-3.100
		./configure
		make
		make install
		安装yasm
		tar -zxf yasm-1.3.0.tar.gz
		cd yasm-1.3.0
		sed -i 's#) ytasm.*#)#' Makefile.in
		./configure
		make
		make install
		安装nasm-2.13.03.tar.gz
		tar -zxf nasm-2.13.03.tar.gz
		./configure
		make
		make install
		安装 x264编码
		unzip x264.zip
		cd x264
		./configure --enable-shared --enable-static
		make
		make install
		安装ffmpeg
		tar -jxf ffmpeg-4.1.tar.bz2
		cd ffmpeg-4.1
		./configure --enable-shared --enable-libmp3lame --enable-libx264  --enable-gpl
		make
		make install

2:安装nginx
安装Nginx依赖
首先在根目录下创建一个叫做nginx-dependence的文件夹

	```
	cd ../../
	
	sudo mkdir nginx-dependence
	```

安装依赖

	```
	d nginx-dependence
	
	sudo wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
	
	sudo tar -zxvf pcre-8.40.tar.gz
	
	cd pcre-8.40/
	
	sudo ./configure
	
	sudo make
	
	sudo make install
	
	sudo wget http://zlib.net/zlib-1.2.11.tar.gz
	
	sudo tar -zxvf zlib-1.2.11.tar.gz
	
	cd zlib-1.2.11/
	
	sudo ./configure
	
	sudo make
	
	sudo make install
	
	sudo wget https://www.openssl.org/source/old/1.1.0/openssl-1.1.0.tar.gz
	
	sudo tar -zxvf openssl-1.1.0.tar.gz
	
	cd openssl-1.1.0/
	
	sudo ./config
	
	sudo make
	
	sudo make install
	```

在nginx-dependence目录中,先下载nginx-rtmp-module

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

安装Nginx

apt-get install build-essential

apt-get install libtool

然后下载并安装Nginx,我安装的版本是1.12.0,我也是安装在根目录的。

依次运行下面的指令。

cd ../../

sudo wget http://nginx.org/download/nginx-1.12.0.tar.gz

sudo tar -zxvf nginx-1.12.0.tar.gz

cd nginx-1.12.0/

sudo ./configure --prefix=/usr/local/nginx --with-pcre=../nginx-dependence/pcre-8.40 --with-zlib=../nginx-dependence/zlib-1.2.11 --with-openssl=../nginx-dependence/openssl-1.1.0  --with-http_ssl_module --add-module=/nginx-dependence/nginx-rtmp-module

sudo make

sudo make install

–with-pcre=…/nginx-dependence/pcre-8.40 就是我的pcre依赖所放置的位置,这个位置可根据自己的安装位置进行灵活配置。–add-module=/nginx-dependence/nginx-rtmp-module 这个module 的路径也要正确设置为之前下载nginx-rtmp-module的路径。

在命令行中输入这个命令启动nginx服务器:

sudo /usr/local/nginx/sbin/nginx

nginx.conf中加入配置,与http同级

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    gzip  on;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        #配置hls
        location /hls {  
            types {  
                application/vnd.apple.mpegurl m3u8;  
                video/mp2t ts;  
            }  
            root /tmp;  
            add_header Cache-Control no-cache;  
        }  
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

rtmp {

    server {

        listen 1935;

        chunk_size 40000;

        application videotest {
            live on;
            hls on;
            hls_path /home/;
        }

        application hls {
            live on;
            hls on;
            hls_path /home/hls;
        }
   }
}

重启nginx

/usr/local/nginx/sbin/nginx -s reload

关闭防火墙

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

页面播放需要用video.js:

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="../js/jquery.min(1).js"></script>
    <script src="../js/video.min.js"></script>
    <link href="../js/video-js.min.css" rel="stylesheet">
    <script>
        videojs.options.flash.swf = "https://cdn.bootcss.com/videojs-swf/5.1.0/video-js.swf";
    </script>
</head>
<body>
<video id="my-video" class="video-js vjs-default-skin vjs-big-play-centered" width="800" height="600">
    <source src='rtmp://{ip}:1935/hls/test2' type='rtmp/flv'/>
</video>
<script>
    var player = videojs('my-video');
    player.play();
</script>
</body>
</html>

先浏览器打开页面,在服务器上执行下面命令:
1:将视频文件推流到rtmp

ffmpeg -re -i /home/video/111.mp4 -vcodec copy -acodec copy -f flv rtmp://{ip}:1935/hls/test2

播放地址 rtmp://{ip}:1935/hls/test2

2:将屏幕推流到rtmp

start ffmpeg -f gdigrab -i desktop -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://{ip}:1935/live/jing

播放地址 rtmp://{ip}:1935/live/jing

3:将摄像头推流到hls

ffmpeg -f vfwcap  -i "0" -c:v libx264 -preset ultrafast  -acodec libmp3lame -ar 44100 -ac 1  -f flv rtmp://{ip}:1935/hls/home

播放地址 http://{ip}:80/hls/home.m3u8

4:将视频文件推流到hls

ffmpeg -re -i F:/08.flv -vcodec copy -acodec copy -f flv rtmp://{ip}:1935/hls/stream

播放地址 http://{ip}:80/hls/stream.m3u8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值