基于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目录

py 复制代码
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软件页面信息如下

相关推荐
shut up18 小时前
LangChain - 如何使用阿里云百炼平台的Qwen-plus模型构建一个桌面文件查询AI助手 - 超详细
人工智能·python·langchain·智能体
宝贝儿好19 小时前
【python】第五章:python-GUI编程
python·pyqt
闲人编程19 小时前
从多个数据源(CSV, Excel, SQL)自动整合数据
python·mysql·数据分析·csv·存储·数据源·codecapsule
B站_计算机毕业设计之家19 小时前
推荐系统实战:python新能源汽车智能推荐(两种协同过滤+Django 全栈项目 源码)计算机专业✅
大数据·python·django·汽车·推荐系统·新能源·新能源汽车
茯苓gao20 小时前
Django网站开发记录(一)配置Mniconda,Python虚拟环境,配置Django
后端·python·django
Full Stack Developme20 小时前
Python Redis 教程
开发语言·redis·python
码界筑梦坊20 小时前
267-基于Django的携程酒店数据分析推荐系统
python·数据分析·django·毕业设计·echarts
Cherry Zack20 小时前
Django视图进阶:快捷函数、装饰器与请求响应
后端·python·django
qq_49244844620 小时前
Jmeter设置负载阶梯式压测场景(详解教程)
开发语言·python·jmeter
lianyinghhh21 小时前
瓦力机器人-舵机控制(基于树莓派5)
人工智能·python·自然语言处理·硬件工程