10-?音视频技术核心知识|RTMP服务器搭建【流媒体、服务器环境】

一、前言

顺应时代的技术发展潮流,逐步学习并掌握音视频技术核心知识,让技术落地,让知识赋能生活,让科技造福千万灯火。

二、流媒体

1. 基本概念

流媒体(Streaming media),也叫做:流式媒体。

  • 是指将一连串的多媒体数据压缩后,经过互联网分段发送数据,在互联网上即时传输影音以供观赏的一种技术与过程
  • 此技术使得数据包可以像流水一样发送,如果不使用此技术,就必须得先下载整个媒体文件才能进行观看

流媒体的一个非常典型、火爆的应用场景:直播。近几年,直播行业是蒸蒸日上。

2. 直播架构

下面放几张图片,简单了解一下直播技术的基本架构。

  • 简单
    简单
  • 详细
    详细

你可能会有个疑问:信令服务器是干嘛用的?用来处理分享端和观看端的一些信令指令,比如创建房间、加入房间等。

  • 京东云
    京东云
  • 百度智能云
    百度智能云

用文字总结一下基本流程是:

  • 分享端(比如主播) -> 产生音视频 -> 编码压缩音视频 -> 推流到服务器
  • 观看端(比如观众) -> 从服务器拉流 -> 解码解压缩音视频 -> 播放音视频

3. 推拉流

  • 推流:通过流媒体协议,将音视频数据发送到流媒体服务器
  • 拉流:通过流媒体协议,从流媒体服务器上拉取获得音视频数据

4. 流媒体协议

常见的流媒体协议有:RTMP、HLS等。

  • RTMP(Real-Time Messaging Protocol)
    • 译为:实时消息传输协议,由Adobe公司出品
    • 默认基于TCP的1935端口
  • HLS(HTTP Live Streaming)
    • 基于HTTP的流媒体网络传输协议,苹果公司出品
    • 参考:RFC 8216

本文主要介绍RTMP协议相关知识。

5. 服务器环境

首先,要搭建好RTMP服务器环境,主要步骤如下:

  • 安装虚拟机VMWareParallels Desktop
    • 我这里安装的是VMWare
  • 在虚拟机上安装CentOS系统
    • CentOS是Linux系统的一种,这里用7.6版本,建议跟我的版本保持一致
  • 在CentOS系统中安装nginxnginx-rtmp-module
    • nginx:一款高性能的开源web服务器
    • nginx-rtmp-module:让nginx支持rtmp
  • 配置nginx
  • 启动nginx

6. 安装CentOS

6.1 下载CentOS

推荐网站:centoschina,上面有CentOS的各种版本,这里下载CentOS-7-x86_64-DVD-1810.iso,大小是4G多。

7. 安装nginx

nginx官网下载目前最新的稳定版:nginx-1.20.1.tar.gz

8. 安装nginx-rtmp-module

nginx-rtmp-module的github下载目前最新的稳定版:v1.2.2.tar.gz

9. 配置nginx

10. 启动nginx

11. 一些步骤和命令整理

  • 安装依赖
      yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
    
  • 设置共享文件夹
    • 查看共享成功与否
      • vmware-hgfsclient
    • 挂载到对应目录(这里放mnt)
      • vmhgfs-fuse .host:/共享目录名称 /mnt/目录名称
  • 解压ngnix相关内容
    • cp 源 目标
    • tar -zxvf 解压文件
  • 进入nginx目录,执行configure进行配置
     ./configure --prefix=/usr/local/nginx --add-module=ngnix的rtmp模块目录 --with-http_ssl_module
    
  • 修改nginx配置
    • vim conf/nginx.conf
      rtmp {      
      
          server {    
      
              listen 1935; # 端口
      
              chunk_size 4000;     
      
              application live { # 请求路径
      
                  live on;     
      
              }   
      
          }   
      
      }
      
  • 配置PATH
    • export PATH=$PATH:/usr/local/nginx/sbin
  • 启动nginx
    • nginx
  • 查看
    • 端口占用:lsof -i:1935
    • 杀死进程:kill -9 pid
  • 如果远程连接不上rtmp服务器,有可能是因为防火墙把1935端口关掉了
            # 查看端口情况(返回no代表被关闭了)
            firewall-cmd --query-port=1935/tcp
            # 拿到zone名称(一般是public)
            firewall-cmd --get-active-zones
            # 打开端口
            firewall-cmd --zone=public --add-port=1935/tcp --permanent
            # 重启防火墙(再次查看端口情况,应该会返回yes了)
            firewall-cmd --reload
    
  • ffmpeg推流
    ffmpeg -i xx.mp4 -f flv rtmp://ip地址:1935/live/xx
    
  • ffmpeg拉流
        ffplay rtmp://ip地址:1935/live/xx
    

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYrCsxtc' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片