前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【FFmpeg】使用 ffmpeg 命令实现直播推拉流 ( 推流和拉流简介 | 流媒体服务器搭建 | 使用 ffmpeg 命令进行推流操作 | 使用 ffmpeg/ffplay 命令进行拉流操作 )

【FFmpeg】使用 ffmpeg 命令实现直播推拉流 ( 推流和拉流简介 | 流媒体服务器搭建 | 使用 ffmpeg 命令进行推流操作 | 使用 ffmpeg/ffplay 命令进行拉流操作 )

作者头像
韩曙亮
发布2024-05-10 08:01:48
4200
发布2024-05-10 08:01:48
举报
文章目录

?

  • 一、推流和拉流简介
    • 1、直播推流和拉流操作
    • 2、直播推流和拉流涉及到的软件
    • 3、推流 -> 拉流 流程
  • 二、流媒体服务器搭建
  • ?
    • 1、相关文件准备
    • 2、创建 ECS 云服务器实例
    • 3、配置安全组
    • 4、使用 WinSCP 上传流媒体服务器软件及配置脚本
    • 5、使用 SecureCRT 连接服务器
    • 6、搭建流媒体服务器
  • 三、使用 ffmpeg 命令进行推流操作
  • 四、使用 ffplay 命令进行拉流操作
  • 五、使用 ffmpeg 命令进行拉流操作
在这里插入图片描述
在这里插入图片描述

博客总结 :

  • ffmpeg 推流命令 :
代码语言:javascript
复制
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://39.105.129.233/myapp/
  • ffplay 拉流命令 :
代码语言:javascript
复制
ffplay rtmp://39.105.129.233/myapp/
  • ffmpeg 拉流命令 :
代码语言:javascript
复制
ffmpeg -i rtmp://39.105.129.233/myapp/ -c copy output.flv

一、推流和拉流简介


1、直播推流和拉流操作

FFmpeg 工具可以用于 直播 的 推流和拉流 操作 ;

  • 推流 是 将本地的音视频流推送到流媒体服务器上 , 如 : 主播将本地电脑上的画面推流到直播平台的流媒体服务器上 ;
  • 拉流 是 拉流是从流媒体服务器上接收音视频流并在本地播放或处理的过程 , 如 : 用户 观看直播平台直播时 , 从流媒体服务器上实时获取直播内容 ;

2、直播推流和拉流涉及到的软件

上述操作涉及到 3 个软件 :

  • 推流端软件
  • 流媒体服务器
  • 拉流端软件

3、推流 -> 拉流 流程

流媒体服务器 在 推流 和 拉流 操作中 , 扮演者重要的角色 , 其主要任务 是 将视频 和 音频等多媒体内容进行 编解码 和 传输 ;

  • 推流 时 , 推流软件 将 音视频 编码 , 传输给 流媒体服务器 ;
  • 流媒体服务器 接收 推流的数据 , 先进行解码 进行各种处理 , 然后再进行编码传输给 拉流端 ;
  • 拉流 时 , 拉流软件 将 从 流媒体服务器 接收的 音视频编码 数据 进行解码 , 然后进行播放 ;

二、流媒体服务器搭建


参考如下博客搭建流媒体服务器 :

1、相关文件准备

Android_RTMP博客资料 - CSDN 下载 页面 , 可以下载 Ubuntu 系统 搭建 流媒体服务器 需要的 各种工具和服务器软件 ;

主要是需要前两个软件 ;

在这里插入图片描述
在这里插入图片描述

这是需要上传到 Ubuntu 服务器上需要配置的软件 ;

在这里插入图片描述
在这里插入图片描述

2、创建 ECS 云服务器实例

进入 阿里云服务器 控制台 云服务器 ECS 页面 https://ecs.console.aliyun.com/home , 点击 " 创建实例 " 按钮 ,

在这里插入图片描述
在这里插入图片描述

选择 自定义购买 , 抢占式实例 ( 最便宜 ) , 华北 2 ( 北京 ) 区域 , 选择一个默认交换机 ;

在这里插入图片描述
在这里插入图片描述

实例 通过 选择 1vCPU 筛选 , 选择第一个实例 , 这个便宜 ;

在这里插入图片描述
在这里插入图片描述

选择 Ubuntu 系统 镜像 , 版本号 18.04 64 位 的 ;

在这里插入图片描述
在这里插入图片描述

设置 20 G 的云盘 , 能减少费用 ;

在这里插入图片描述
在这里插入图片描述

选择自定义密码 , 为 root 用户设置 Han@123456 密码 , 要求必须设置 大小写字母 , 特殊字符 和 数字 ;

在这里插入图片描述
在这里插入图片描述

设置 今天晚上 自动释放实例 , 写完博客演示完就可以 ;

在这里插入图片描述
在这里插入图片描述

点击 " 确认下单 " 按钮 , 即可创建实例成功 ; 注意 确保 账户中有 余额 , 否则无法创建该实例 , 冲 10 块钱就行 ;

在这里插入图片描述
在这里插入图片描述

在 实例与镜像 中 , 可以查看刚才创建的实例 ;

在这里插入图片描述
在这里插入图片描述

3、配置安全组

选择 " 网络与安全 " 下面的 安全组 选项 , 点击 管理规则 链接 ,

在这里插入图片描述
在这里插入图片描述

在 " 入方向 " 配置 TCP 协议的 8080 和 1935 端口 , 这是为 流媒体服务器 设置的端口 ;

( 也可以设置别的端口 , 不过流媒体配置脚本也需要对应修改 )

在这里插入图片描述
在这里插入图片描述

点击 实例 最右侧的

在这里插入图片描述
在这里插入图片描述

按钮 , 选择 网络和安全组 下的 修改安全组 选项 ,

在这里插入图片描述
在这里插入图片描述

在 弹出的对话框中 , 可以选择刚才设置了 入方向配置 TCP 协议 8080 和 1935 端口 的 安全组 ;

设置了该安全组 , 才能在 流媒体服务器 中使用这两个端口 ;

在这里插入图片描述
在这里插入图片描述

4、使用 WinSCP 上传流媒体服务器软件及配置脚本

WinSCP 工具在 Android_RTMP博客资料\002_远程Linux控制工具\linux_tools\winscp514 目录下 ;

( 这是 在 Android_RTMP博客资料 - CSDN 下载 页面 中下载的博客资料 )

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、使用 SecureCRT 连接服务器

实例 的 公网 IP 是 39.105.129.233 ,

在这里插入图片描述
在这里插入图片描述

连接 39.105.129.233 地址 , 使用 root 用户名 ,

在这里插入图片描述
在这里插入图片描述

选择 接收并保存 ;

在这里插入图片描述
在这里插入图片描述

输入密码 Han@123456 , 并保存密码 ;

点击 " 确定 " 按钮 , 开始连接 ;

在这里插入图片描述
在这里插入图片描述

连接后 , 可以查看 root 用户目录下的文件 , 包括之前上传的一系列的 流媒体服务器 软件相关的文件 ;

在这里插入图片描述
在这里插入图片描述

6、搭建流媒体服务器

直接执行 rtmp_server_build.sh 脚本文件 , 即可完成服务器搭建 ;

执行

代码语言:javascript
复制
chmod 777 rtmp_server_build.sh

命令 , 为 rtmp_server_build.sh 脚本文件赋予执行权限 ;

在这里插入图片描述
在这里插入图片描述

执行

代码语言:javascript
复制
./rtmp_server_build.sh

命令 , 开始进行流媒体服务器配置 ; 期间会提示几次 输入 Y 按回车 ;

显示如下内容 , 说明执行完毕 ;

在这里插入图片描述
在这里插入图片描述

当前 云服务器 ECS 公网 IP 是 39.105.129.233 ;

在这里插入图片描述
在这里插入图片描述

则 流媒体 服务器的 HTTP 状态查看地址是 http://39.105.129.233:8080/stat , 在浏览器访问该地址 , 可以查看 流媒体 服务器状态 ;

在这里插入图片描述
在这里插入图片描述

在 http://39.105.129.233:8080/ 地址可以查看直播内容 ;

在这里插入图片描述
在这里插入图片描述

三、使用 ffmpeg 命令进行推流操作


执行

代码语言:javascript
复制
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://39.105.129.233/myapp/

命令 , 将本地的 input.mp4 推流到流媒体服务器中 , 开始推流 ;

  • -re 参数 设置 以实时的速度 读取 输入文件 , 如 : 输入视频的长度是 3 分钟 , 那么 使用 3 分钟的时间来处理这个视频 , 不能用最快速度处理完 , 该设置确保了推流的速度与视频播放的速度相匹配 ;
  • -i input.mp4 参数 设置 输入文件名称是 input.mp4 , 此处也可以是 实时的录屏 ;
  • rtmp://39.105.129.233/myapp/ 参数 , rtmp 是 流媒体协议 , 39.105.129.233 是流媒体服务器 , myapp 是在 流媒体服务器 的 nginx.conf 中配置的 rtmp / server / application 配置中配置的应用名称 ;
代码语言:javascript
复制
rtmp {
    server {
        listen 1935;

        application myapp {
            live on;
        }
    }
}

直播的地址不只是 rtmp://39.105.129.233/myapp/ 地址 , 后面可以追加内容 , 如

代码语言:javascript
复制
rtmp://39.105.129.233/myapp/0
rtmp://39.105.129.233/myapp/9527
rtmp://39.105.129.233/myapp/888

这些地址也是可以使用的 , 随后拉流的时候也使用相同的地址进行拉流 ;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、使用 ffplay 命令进行拉流操作


在另一个窗口 , 执行

代码语言:javascript
复制
ffplay rtmp://39.105.129.233/myapp/

命令 , 开始拉流 播放 ; 效果如下 :

在这里插入图片描述
在这里插入图片描述

推流完毕后 , 推流的命令行直接退出 , 拉流的命令行需要手动退出 ;

在这里插入图片描述
在这里插入图片描述

此时 在 服务器状态上 仍然显示有直播流 ;

在这里插入图片描述
在这里插入图片描述

将 拉流 的 命令行 使用 Ctrl + C 强制退出 ,

在这里插入图片描述
在这里插入图片描述

此时服务器的流状态显示未 0 ;

在这里插入图片描述
在这里插入图片描述

五、使用 ffmpeg 命令进行拉流操作


在另一个窗口 , 执行

代码语言:javascript
复制
ffmpeg -i rtmp://39.105.129.233/myapp/ -c copy output.flv

命令 , 开始拉流 ;

在这里插入图片描述
在这里插入图片描述

执行过程如下 , 期间不会播放直播画面 ;

在这里插入图片描述
在这里插入图片描述

在 拉流 命令行界面 , 使用 Ctrl + C 退出 , 拉流完成后 , 会自动将推流内容保存到 output.flv 文件中 ;

在这里插入图片描述
在这里插入图片描述
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、推流和拉流简介
    • 1、直播推流和拉流操作
      • 2、直播推流和拉流涉及到的软件
        • 3、推流 -> 拉流 流程
        • 二、流媒体服务器搭建
          • 1、相关文件准备
            • 2、创建 ECS 云服务器实例
              • 3、配置安全组
                • 4、使用 WinSCP 上传流媒体服务器软件及配置脚本
                  • 5、使用 SecureCRT 连接服务器
                    • 6、搭建流媒体服务器
                    • 三、使用 ffmpeg 命令进行推流操作
                    • 四、使用 ffplay 命令进行拉流操作
                    • 五、使用 ffmpeg 命令进行拉流操作
                    相关产品与服务
                    云直播
                    云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                    http://www.vxiaotou.com