流媒体

基本概念

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

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

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

直播架构

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

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

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

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

推拉流

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

流媒体协议

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

  • RTMP(Real-Time Messaging Protocol)

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

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

服务器环境

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

  • 安装虚拟机VMWare或Parallels Desktop

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

安装CentOS

下载CentOS

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

安装nginx

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

安装nginx-rtmp-module

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

配置nginx

启动nginx

一些步骤和命令整理

  • 安装依赖
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

【秒懂音视频开发】26_RTMP服务器搭建相关推荐

  1. 【秒懂音视频开发】23_H.264编码

    本文主要介绍一种非常流行的视频编码:H.264. 计算一下:10秒钟1080p(1920x1080).30fps的YUV420P原始视频,需要占用多大的存储空间? (10 * 30) * (1920 ...

  2. 【秒懂音视频开发】15_AAC编码实战

    本文将分别通过命令行.编程2种方式进行AAC编码实战,使用的编码库是libfdk_aac. 要求 fdk-aac对输入的PCM数据是有参数要求的,如果参数不对,就会出现以下错误: [libfdk_aa ...

  3. 【秒懂音视频开发】07_音频录制01_命令行

    命令简介 FFmpeg的bin目录中提供了3个命令(可执行程序),可以直接在命令行上使用. 3个命令 ffmpeg ffmpeg的主要作用:对音视频进行编解码. # 将MP3文件转成WAV文件 ffm ...

  4. 【秒懂音视频开发】07_重识音频

    我们平时在互联网上听到的声音,都是先经过录制后,再传输到互联网上的.比如歌曲.电影.主播等的声音. PCM 录音的原理可以简单理解为:把声源的振动记录下来,需要时再让某个物体按照记录下来的振动规律去振 ...

  5. 【秒懂音视频开发】02_重识声音

    关于声音的知识,记得没错的话,是属于初中物理的内容.为了学好音视频,我们有必要重新温习一下声音的相关知识.需要提醒的是:本文的GIF动态图比较多,建议选择在网络较好的环境中阅读. 产生 声音(Soun ...

  6. 【秒懂音视频开发】06_重识声音

    关于声音的知识,记得没错的话,是属于初中物理的内容.为了学好音视频,我们有必要重新温习一下声音的相关知识.需要提醒的是:本文的GIF动态图比较多,建议选择在网络较好的环境中阅读. 产生 声音(Soun ...

  7. 网页测试本地服务器_音视频开发搭建一个直播服务器

    现在抖音.快手等直播实在是太火了,因此对音视频的开发非常感兴趣.查阅了相关资料,使用Nginx搭建一个简单的直播跟点播流媒体服务器,能够实时推流到服务器,同时在网页端播放直播的视频. 先上效果 使用O ...

  8. 音视频开发-SRS 4.0开发环境搭建丨webrtc丨FFmpeg丨SRS流媒体服务器开发

    SRS 4.0开发环境搭建 视频讲解如下,点击观看: 音视频开发-SRS 4.0开发环境搭建丨webrtc丨FFmpeg丨SRS流媒体服务器开发 音视频高级开发学习学习资料链接:FFmpeg/WebR ...

  9. 音视频开发6. 搭建 ffmpeg Linux远程开发环境

    音视频开发6. 搭建 ffmpeg Linux远程开发环境 一.准备环境 二.操作步骤 1. 在CentOS 编译安装 ffmpeg 2. 编译安装ffmpeg后的环境 3. 本地在vscode安装 ...

最新文章

  1. matlab内存管理(二)
  2. Google回归中国对SEO们意味着什么
  3. C语言的词法分析在长度规则方面采用的是什么策略?
  4. html点击按钮切换图片代码_SVG创意推文—『点击开窗』教程
  5. Qt Creator使用CVS
  6. 复选框 全选 全不选 反选 实现
  7. 23种设计模式之简单工厂
  8. “有趣”的投影:当PCA失效时怎么办?
  9. SQL Serve 查询所有可用的数据库语句
  10. 中国双槽超声波清洗机市场趋势报告、技术动态创新及市场预测
  11. Win7虚拟Wifi热点(设置后能连接wifi但无法上网的可按后面提示操作)
  12. lenovo L480 进入bios_如何通过bios关闭pxe启动 - 操作系统
  13. 手机信令数据怎么获得_如何运用手机信令大数据辅助城市规划决策
  14. 以flv.js框架为基础,替换flv格式视频
  15. 华为笔记本已经设置睡眠时间但无法自动进入睡眠状态解决方案(亲测有效)
  16. 域名过期 脚本_域名宝已过期! …还是垃圾?
  17. LASSO和LARS
  18. Spring中的一些常用注解
  19. 程序员为什么热衷于造轮子,升职加薪吗?
  20. 关于win7 32bit连接win10共享打印机0x0000011b解决办法

热门文章

  1. 武汉网站开发:如何制定一个可行的网站预算
  2. 按月龄选取最好胎儿教育方法
  3. android弧形背景,Android 弧形进度条
  4. 秒验 手机号码置换接口
  5. Spring Boot文档翻译
  6. 10分钟 GET 新技能 - Markdown
  7. licode服务端总结
  8. Licode入门学习:WebRtcConnection源码分析(三)
  9. 接口和抽象类的区别与联系
  10. 练习4-2,对atof函数进行扩充,使它可以处理形如123.456e-6的科学表示法,其中,浮点数后面可能会紧跟一个e或E以及一个指数(可能有正负号)