直播源的制作

一.直播源的制作【方法一:Nginx+ffmpeg】

1.方法一:Nginx+ffmpeg

  • 安装Nginx(简易服务器)

    • Mac上安装命令brew install nginx-full --with-rtmp-module
    • 验证是够安装成功
      • 执行nginx启动Nginx服务器
      • 在浏览器中输入http://localhost:8080
  • 安装ffmpeg(处理视频工具)

    • Mac上安装命令brew install ffmpeg
    • 验证是否安装成功
      • 输入命令ffmpeg
  • 配置Nginx(从而与ffmpeg配合实现推流)

    • 打开/usr/local/etc/nginx/nginx.conf文件

    • 添加rtmp模块

      rtmp {
          server{
              listen 1935;
              chunk_size 4000;
              # RTMP 直播流配置
              application rtmplive {
                  # 直播的模式
      	    live on;
      	    # 设置最大连接数
                  max_connections 1024;
              }
              
              # hls 直播流配置
              application hls{
                  live on;
                  hls on;
                  hls_path /usr/local/var/www/hls;
      	    # 每个hls分片多大
                  hls_fragment 5s;
              }
          }
      }
      
    • 在server模块中增加路径,用于测试

      location /hls{
          types{
              application/vnd.apple.mpegurl m3u8;#响应头类型
              video/mp2t ts;
          }
          root /usr/local/var/www;
          add_header Cache-Control no-catch;#不要缓存
      }
      
    • 查看是否可以推流

      • 首先需要停掉之前开启的nginxnginx -s stop,再重启nginx(因为修改了配置文件)
      • 将之前live-demo中的test.mp4模拟作为视频源,当成摄像头,进行视频采集(已经制作好的视频和摄像头采集的视频本质上是没有太大区别的)
      • 使用ffmpeg -re -i test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/rtmplive/rtmp切视频进行推流
        • -i表示输入
        • test.mp4作为输入文件
        • -vcodec libx264视频编码为libx264
        • -acodec aac -f flv设置音频编码
        • rtmp://localhost:1935/rtmplive/rtmp表示推流地址
  • 准备视频【请看上方】

  • 利用ffmpeg推流【请看上方】

2.方法一:查看视频流信息

普通的播放器是不能识别rtmp协议的,故需要使用下方播放器

  • 安装VLC播放器和Safari浏览器
    • Mac系统:https://www.videolan.org/vlc/index.zh.html
  • 验证流是否能成功播放
    • 执行命令ffmpeg -re -i test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/rtmplive/rtmp进行推流(等几秒钟,因为推流的过程中需要推一个片段出去,一个片段需要很多帧)
    • 打开VLC播放器,File->Open NetWork,复制地址 rtmp://localhost:1935/rtmplive/rtmp点Open进行视频流的播放
  • 验证hls进行推流
    • 执行命令ffmpeg -re -i test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/hls/stream(hls已经不是rtmp协议了,使用的是http协议,故使用的时候需要添加上述server模块中的locaion)
    • ffmpeg实现原理:ffmpeg实现推流的时候,会将MP4的视频文件按照hls协议转成对应的格式,将视频文件存储到hls_path /usr/local/var/www/hls;中,用户访问地址的时候是通过http协议访问的,访问/hls,路径是root /usr/local/var/www;
    • 打开safari浏览器,访问localhost:8080/hls/stream.m3u8

二.直播源的制作【方法二:集成服务】

1.集成服务

  • 下载服务
    • 稍后会在给出server程序的资源下载地址,是一个压缩包
  • 安装服务
    • 压缩包中有可执行文件,直接解压压缩包即可
  • 准备源视频(test.mp4)
  • 开启服务
    • 运行现成的二进制程序server,执行open server
  • 利用ffmpeg推流
    • 推流命令ffmpeg -re -i test.mp4 -c copy -f flv rtmp://localhost:1935/live/movie
    • 验证地址(都可以访问)
      • RTMP:rtmp://localhost:1935/live.movie
      • FLV:http://127.0.0.1:7001/live/movie.flv
      • HLS:http://127.0.0.1:7002/live/movie.m3u8

三.方法一和方法二的区别

  • 方法一优点:手动设置nginx和ffmpeg,可以更强的判断nginx到底起的是什么服务;而方法二都是封装好的,很多设置没法进行改变
  • 方法一的缺点:成本比较高,必须要学会Nginx

你可能感兴趣的:(直播相关)