基于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软件页面信息如下

相关推荐
BTU_YC6 小时前
python 内网部署
开发语言·python
ytao_wang6 小时前
pip install -e .报错ModuleNotFoundError: No module named ‘torch‘
pytorch·python·深度学习
昨日之日20066 小时前
HunyuanVideo-Foley V2版 - AI视频配音 自动识别视频内容并配音 支持50系显卡 一键整合包下载
人工智能·音视频
斯班奇的好朋友阿法法6 小时前
JAVA映射实体类对象和LIst
java·python·list
@YDWLCloud6 小时前
出海 APP 如何降低延迟?腾讯云国际版 GME 音视频深度评测
大数据·服务器·云计算·音视频·腾讯云
大城市里的小麻雀6 小时前
ragflow在linux系统中下载镜像一直卡着不动
python·ai
黑客思维者6 小时前
Python自动化截图/录屏3大方案(PIL/mss/ffmpeg)深度拆解
python·ffmpeg·自动化·录屏
爱写bug的野原新之助6 小时前
10_异常处理
开发语言·python
肥猪猪爸6 小时前
TextToSql——Vanna的安装与使用
人工智能·python·算法·机器学习·大模型·ollama·vanna
无限大.6 小时前
验证码对抗史
java·开发语言·python