nginx-rtmp-module和ffmpeg搭建流媒体服务器

  万事俱备,只欠东风,安装完毕nginx-rtmp-module 和ffmpeg后,就可以开始搭建流媒体服务器了哈。下面是具体步骤:
  
  一、配置nginx.conf
  打开nginx配置文件,在里面添加如下配置:

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

rtmp 不在任何域里面.另外针对hls,需要增加如下配置

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

这个配置需要配置在配置文件的server域里面.以上如果配置错误 ,重启nginx时会报错如:

nginx: [emerg] "rtmp" directive is not allowed here in /etc/nginx/nginx.conf:18

重启NGINX后,用netstat -anp|grep 1935 命令查看是否已经启动流媒体服务的端口。有则证明启动和配置成功。

  二、ffmpeg推流到nginx
1, rtmp流  

ffmpeg -re -i “/alidata/download/06.mp4” -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://你的服务器ip:1935/myapp/test1

执行这个命令,则表示将流推送到 rtmp://你的服务器ip:1935/myapp/test1这个地址,解释一下这个命令行的选项参数:

-vcodec libx264 表示 视频的编码器为H264;
vprofile baseline 设置音视频编码器的类
-acodec aac 指定声音的编码器为AAC
-ar 44100 设定音频编解码器的采样率,整数,单位Hz。
-strict -2
-ac 1 设置音频编解码器的声道数目
-f flv 强制设定输入和输出文件格式
-s 1280x720 设置图像分辨率
-q 10

复制这个地址到VLC播放器就可以看到视频
nginx-rtmp-module和ffmpeg搭建流媒体服务器_第1张图片

2,hls流

ffmpeg -re -i “/alidata/download/06.mp4” -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://你的服务器IP:1935/hls/test2

配置参数跟rtmp流也是一样,只是输出流地址不一样,这里为:http://serverIp:8080/hls/test2.m3u8
nginx-rtmp-module和ffmpeg搭建流媒体服务器_第2张图片

在/tmp/hls目录 则看到生成了test2.m3u8文件
nginx-rtmp-module和ffmpeg搭建流媒体服务器_第3张图片

播放器播放的就是这个文件。至此已经利用nginx-rtmp-module和ffmpeg成功搭建流媒体服务器,对视频播放已经大概有一个认识。

你可能感兴趣的:(webrtc)