当前位置: 首页 > article >正文

基于mediamtx+ffmpeg实现视频推流,基于python-deffcode实现视频拉流

软件依赖:mediamtx、ffmpeg
python包依赖:deffcode
mediamtx下载地址:https://github.com/bluenviron/mediamtx/releases
ffmeg下载地址:https://ffmpeg.org/download.html
deffcode安装命令:pip install deffcode

1、mediamtx下载安装

MediaMTX(原名 rtsp-simple-server)是一款即用型、零依赖的实时媒体服务器和媒体代理,可用于发布、读取、代理、录制和播放视频和音频流。它被设想为一个“媒体路由器”,可将媒体流从一端路由到另一端。

其支持的流协议有:
在这里插入图片描述

打开https://github.com/bluenviron/mediamtx/releases/tag/v1.9.0,根据自己的硬件环境+操作系统下载软件。
在这里插入图片描述
下载后解压文件,得到mediamtx.exe与mediamtx.yml。
mediamtx.ym是软件配置文件,其可以配置各种协议的默认端口,如rtspAddress设置
在这里插入图片描述

2、进行推流与拉流

2.1 下载安装ffmpeg

打开 https://github.com/BtbN/FFmpeg-Builds/releases ,根据自己系统下载软件包
在这里插入图片描述
解压项目,同时将 ffmpeg-master-latest-win64-gpl-shared\bin 的路径添加到系统环境变量中

2.2 启动mediamtx

双击mediamtx即可,可以看到开始监听指定端口了
在这里插入图片描述

2.3 进行推流

在cmd或终端中执行
ffmpeg -re -stream_loop -1 -i 风景视频素材分享.flv -c copy -f rtsp rtsp://127.0.0.1:8554/input

其中风景视频素材分享.flv为视频文件名称,rtsp://127.0.0.1:8554/input为推流的地址

执行推流时的终端如下
在这里插入图片描述
此时mediamtx的输出如下
在这里插入图片描述

2.4 拉流播放

custom_ffmpeg是ffmpeg中bin目录

from deffcode import FFdecoder
import cv2
# FFedecoder创建视频源和视频解码规则,formulate在ffmpeg中执行语句
# 本地视频
# decoder = FFdecoder("test.mp4").formulate()
# rtsp流
decoder = FFdecoder("rtsp://127.0.0.1:8554/input", custom_ffmpeg=r"D:\视频推流\ffmpeg-master-latest-win64-gpl-shared\bin").formulate()
 
# 从decoder中抓取RGB图像
for frame in decoder.generateFrame():
    # 将rgb图像转换为bgr图像,送给opencv展示
    frame_bgr = frame[:, :, ::-1]
    cv2.imshow("Output Frame", frame_bgr)
 
    key = cv2.waitKey(1) & 0xFF
    if key == ord("q"):
        break
 
# 安全关闭解码进程
decoder.terminate()

流播放效果如下所示
在这里插入图片描述
此时mediamtx软件页面信息如下
在这里插入图片描述


http://www.kler.cn/news/289857.html

相关文章:

  • 在Vision Pro上实现360度全景视频播放:HLS360VideoMaterial框架介绍
  • Python 在网络运维方面的自动化应用实例
  • sqlserver 如何收缩+最大化压缩数据库
  • git无法pull仓库refusing to merge unrelated historie
  • 【APP自动化】Appium 环境搭建
  • JVM4-运行时数据区
  • 【论文阅读】:Mamba YOLO SSMs-Based YOLO For Object Detection
  • 计算机网络:http协议
  • 代码随想录 -- 二叉树 -- 二叉树的递归遍历
  • 13、Django Admin创建两个独立的管理站点
  • 【C++ Primer Plus习题】10.1
  • php邮箱服务器怎么搭建?如何构建服务器?
  • 【重学MySQL】四、关系型数据库设计规则
  • 在react中要将页面跳转有动画
  • 139. 单词拆分
  • 在线音乐播放器项目
  • Kafka【五】Buffer Cache (缓冲区缓存)、Page Cache (页缓存)和零拷贝技术
  • 五、Selenium操作指南(二)
  • 第二证券:涨停潮!传手机将使用钛金属外壳?
  • JVM(Java虚拟机)
  • 深入探索JNI:基础、最佳实践、性能优化与安全策略
  • Mental-LLM——通过在线文本数据利用大型语言模型进行心理健康预测
  • 【高级编程】实用类详解(中)String类及其常用方法 含判断邮箱格式案例
  • springboot使用缓存
  • Java实现加密(六)国密SM2算法
  • 【Qt】QChart折线图
  • ROS 编程入门
  • 集成电路学习:什么是IP知识产权
  • 本地搭建 Whisper 语音识别模型实现实时语音识别研究
  • 单线程Redis:Redis为什么这么快