EasyDarwin 、ffmpeg 音视频推流拉流;OBS视频推理软件、obs-rtspserver服务器;python读取rtsp流

news2024/11/27 10:32:31

参考:https://blog.csdn.net/N71FS1/article/details/130019563

一、EasyDarwin +ffmpeg

ffmpeg 推送音视频流到rtsp流服务器
EasyDarwin 作为rtsp流服务器 (下载:https://www.easydarwin.org/p/easydarwin.html)

OBS 直播音视频录屏加推流到指定rtsp流服务器

1、EasyDarwin安装使用

下载后直接exe可以打开软件;其中ini文件是软件端口等信息,软件默认端口10086,账户秘密admin;rtsp端口10054
在这里插入图片描述
在这里插入图片描述
登录后台页面http://localhost:10086/
在这里插入图片描述

2、然后ffmpeg进行推流

#推送音频
ffmpeg -f dshow -i audio="麦克风阵列 (适用于数字麦克风的英特尔® 智音技术)" -acodec aac -preset:v ultrafas
t -tune:v zerolatency -f rtsp rtsp://127.0.0.1:10054/text

#推送摄像头画面声音
ffmpeg -f dshow -i video="Integrated Camera":audio="麦克风阵列 (适用于数字麦克风的英特尔® 智音技术)" -vcodec libx264  -preset:v ultrafast -tune:v zerolatency -f rtsp rtsp://127.0.0.1:10054/text

##推送实时电脑屏幕
ffmpeg -f dshow -i desktop -codec:v libx264 -preset:v ultrafast -tune:v zerolatency -f rtsp rtsp://localhost:10054/text
或
ffmpeg -f gdigrab -framerate 30 -i desktop -codec:v libx264 -preset:v ultrafast -tune:v zerolatency -f rtsp rtsp://localhost:10054/stream

然后vlc 或potplayer工具拉流查看
在这里插入图片描述
手机可以使用MXplayer查看:
在这里插入图片描述
在这里插入图片描述

二、OBS+obs-rtspserver服务器

参考:https://blog.csdn.net/yangyanglulu/article/details/131403696

1、OBS视频推理软件

https://obsproject.com/
在这里插入图片描述

2、obs-rtspserver

https://github.com/iamscottxu/obs-rtspserver/releases
直接下载exe直接安装,然后重启obs即可,可以在工具下面看到rtsp服务器

在这里插入图片描述
需要声音点击音轨,然后直接启动
在这里插入图片描述
直播流这里设置
在这里插入图片描述

然后既可以远程视频浏览器查看:
这里用的potplayer播放器

在这里插入图片描述
在这里插入图片描述
或者下载vlc工具擦好看:
https://get.videolan.org/vlc/3.0.20/win64/vlc-3.0.20-win64.exe
在这里插入图片描述
或者命令查看视频:

ffmpeg -rtsp_transport tcp -i "rtsp://admin:admin@localhost:554/live" -f sdl "SDL Video"

注意:
另外画面视频很多窗口叠加解决方法:

在这里插入图片描述

三、python读取rtsp流

1、opencv读取画面(读取不了声音)

import cv2

# RTSP URL
rtsp_url = 'rtsp://localhost:554/live'

# 创建视频捕获对象
cap = cv2.VideoCapture(rtsp_url)
# 设置解码器的四字符代码为 H264
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc(*'H264'))

# 检查视频捕获对象是否成功打开
if not cap.isOpened():
    print("无法打开 RTSP 视频流")
    exit()

# 循环读取和显示视频帧
while True:
    # 从视频捕获对象中读取一帧
    ret, frame = cap.read()

    # 检查是否成功读取到帧
    if not ret:
        print("无法读取帧")
        break

    # 在窗口中显示帧
    cv2.imshow('RTSP Video Stream', frame)

    # 按下 'q' 键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放视频捕获对象和窗口
cap.release()
cv2.destroyAllWindows()

2、ffmpeg+pyaudio 读取音频进行播放

查看音视频基础信息

ffmpeg -i rtsp://localhost:554/live

在这里插入图片描述

注意采样率这些参数

import subprocess
import pyaudio

url = "rtsp://admin:admin@localhost:554/live"
ffmpeg_cmd = [
    "ffmpeg",
    "-i", url,
    "-f", "s16le",
    "-acodec", "pcm_s16le",
    "-ar", "16000",
    "-ac", "1",
    "-"
]

# 创建 FFmpeg 进程
process = subprocess.Popen(
    ffmpeg_cmd,
    stdout=subprocess.PIPE,
    stderr=subprocess.DEVNULL,
    bufsize=1600
)

# 创建 PyAudio 音频流
audio_stream = pyaudio.PyAudio().open(
    rate=16000,
    channels=1,
    format=pyaudio.paInt16,
    output=True
)

# 循环读取和播放音频数据
while True:
    # 从 FFmpeg 进程中读取音频数据
    audio_data = process.stdout.read(1600)

    # 检查是否读取到数据
    if not audio_data:
        break

    # 播放音频数据
    audio_stream.write(audio_data)

# 关闭音频流和 FFmpeg 进程
audio_stream.stop_stream()
audio_stream.close()
process.terminate()

import subprocess

def save_rtsp_audio(rtsp_url, output_file):
    command = [
        'ffmpeg',
        '-i',
        rtsp_url,
        '-map',
        '0:1',
        '-vn',
        '-c:a',
        'copy',
        output_file
    ]

    try:
        subprocess.call(command)
        print('Audio stream saved successfully.')
    except subprocess.CalledProcessError as e:
        print(f'Error executing ffmpeg command: {e.output}')
    except KeyboardInterrupt:
        print('Process interrupted by user.')

# 使用示例
rtsp_url ="rtsp://localhost:554/live"
output_file = 'output.aac'
save_rtsp_audio(rtsp_url, output_file)


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1562915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是交换机虚拟化技术?

热门IT【视频教程】-华为/思科/红帽/oracle https://blog.csdn.net/XMWS_IT/article/details/137153651?spm1001.2014.3001.5501 简介 通过交换机虚拟化技术,既可以在逻辑上集成多台物理连接的交换机,实现拓宽虚拟交换机带宽、提升转发效率的目的&…

城市交通视频视频联网系统实施方案

目录 1.需求调研 2.系统设计 3.技术分析 4.技术开发 5.系统平台环境要求 6.网络要求 7.安全要求 8.项目交付和验收 8.1交付准备 8.2系统安装、培训 8.2.1系统验收 8.2.2项目进度计划 附录:交通监控设备情况调研表 1.需求调研 从SZ市交通运输局、以及下…

YOLOv9改进策略 :主干优化 | 无需TokenMixer也能达成SOTA性能的极简ViT架构 | CVPR2023 RIFormer

💡💡💡本文改进内容: token mixer被验证能够大幅度提升性能,但典型的token mixer为自注意力机制,推理耗时长,计算代价大,而RIFormers是无需TokenMixer也能达成SOTA性能的极简ViT架构 ,在保证性能的同时足够轻量化。 💡💡💡RIFormerBlock引入到YOLOv9,多个数…

【Linux】自定义协议+序列化+反序列化

自定义协议序列化反序列化 1.再谈 "协议"2.Cal TCP服务端2.Cal TCP客户端4.Json 喜欢的点赞,收藏,关注一下把! 1.再谈 “协议” 协议是一种 “约定”。在前面我们说过父亲和儿子约定打电话的例子,不过这是感性的认识&a…

Java接口与继承实践:Ether通信系统的构建(day16)

创建一个接口Icontroller, 再创建一个接口IReceiver, 创建一个子类实现IReceiver, 创建一个子类实现IContrller, 创建一个类Ether 创建一个Signal类 创建一个类Radiosignal继承Signal 创建一个用户User 最后创建一个Main类 今日总结&#xff1a…

GDC回顾与MAU前瞻丨Flat Ads开启开发者流量变现新篇章

3月18日-22日,全球游戏行业最具规模、最有影响力的盛会——GDC 2024 在美国旧金山 Moscone Convention Center 成功举办,Flat Ads作为参展商亮相GDC大会,向全球游戏开发者展示我们的最新技术与服务。此次Flat Ads团队不仅洞察了行业最前沿的技术和发展趋势,同时也与诸多一线开发…

【Qt】:常用控件(一)

常用控件 一.概述二.QWidget核心属性1.enabled(是否可用)2.geometry(设置坐标)3.WindTitle(窗口标题)4.windowIcon1.绝对路径2.qrc机制 5.windowOpacity(透明度) 一.概述 Widget是Q…

前端大文件分片上传

1.分片上传整体流程 开始上传:前端启动文件分片上传。后端返回唯一标识。分片上传:获取到上传的文件,然后设置一个固定的分片大小,将文件切成多个小片,计算出每一个分片的MD5值(32位)。将每个分…

新model开发记录

模型使用 -- 用blender导出为 fbx ,修改渲染方式(点击模型->Materials->Extract Materials(将材质从fbx中 单独提取出来了)->Materials 选择 Shader -> SimpleURPToonLitExample 点开脸的材质,勾选第一条) 解决角色…

【Redis】redis集群模式

概述 Redis集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。实际使用中集群一般由多个节点(Node)组成,Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护&#…

基于OSPF的企业内网安全优化

1.拓扑 2.IP地址规划 设备/地址/vlan设备/地址汇聚交换机/VLAN10192.200.10.0/24汇聚交换机/VLAN20192.200.20.0/24汇聚交换机/VLAN30192.200.30.0/24汇聚交换机/VLAN40192.200.40.0/24汇聚交换机/VLAN50192.200.50.0/24汇聚交换机/VLAN60192.200.60.0/24防火墙/VLAN70/服务器…

【面试八股总结】传输控制协议TCP(二)

参考资料 :小林Coding、阿秀、代码随想录 一、TCP报文段首部 TCP 虽然是面向字节流的,但 TCP 传送的数据单元却是报文段。 一个 TCP 报文段分为首部和数据两部分,TCP 报文段首部的前 20 个字节是固定的,后面有 4n 字节是根据需要…

MongoDB 启动异常

Failed to start up WiredTiger under any compatibility version. 解决方案: 删除WiredTiger.lock 和 mongod.lock两个文件,在重新启动。回重新生成新的文件。

vue3源码解析——ref和reactive定义响应式的区别

ref 和 reactive 是 Vue 3.0 中用于定义响应式数据的两个新 API。它们有以下区别: ref 定义单个响应式数据 数据类型可以是任意类型。它通常用于定义原始数据类型为响应式数据。返回一个响应式对象,该对象包含一个 .value 属性,可用于获取和设…

【滤波器基础】卡尔曼滤波器

滤波器基础 为了进一步抑制高频噪声,科研人员也会采用一些高阶低通滤波器来对电流采样信号的高频噪声进行抑制,常用的一种滤波器为:巴特沃兹滤波器。除了这种滤波器,也存在如贝塞尔、切比雪夫滤波器等。 巴特沃斯滤波器 在线性控…

linux自动化运维之ansible实战

ansible基础介绍 优点 - 相比于saltatack和puppet,没有客户端,更轻量级 - 只是一个工具,可以很容易实现分布式拓展 - 更强的远程执行命令 特点 - 模块化 - 支持自定义模块,可以用任何语言编写模块 - 基于python语言实现 - 部署简单…

深度学习实战73-基于多模态CLIP模型的实战项目,CLIP模型的架构介绍与代码实现

大家好,我是微学AI,今天给大家介绍一下深度学习实战73-基于多模态CLIP模型的实战项目,CLIP模型的架构介绍与代码实现。多模态CLIP(Contrastive Language-Image Pre-training)模型是一种深度学习模型,其核心设计理念是通过大规模的对比学习训练,实现图像与文本之间的跨模…

前端调试工具之Chrome Elements、Network、Sources、TimeLine调试

常用的调试工具有Chrome浏览器的调试工具,火狐浏览器的Firebug插件调试工具,IE的开发人员工具等。它们的功能与使用方法大致相似。Chrome浏览器简洁快速,功能强大这里主要介绍Chrome浏览器的调试工具。 打开 Google Chrome 浏览器&#xff0c…

便携式气象站是什么

TH-BQX5便携式气象站是一种用于应对突发天气灾害和紧急情况的便携式气象监测设备。它通常包括气温、湿度、气压、风速、风向和降水量等关键气象要素的测量功能,能够快速准确地记录这些气象参数。此外,一些高级的便携式气象站还具备预警功能,当…

阿里云学习笔记

1、什么是IaaS,PaaS和SaaS? IaaS、PaaS 和 SaaS 是云计算服务的三种主要模式,它们分别代表了不同的服务层级,按照由低到高的抽象程度排序如下: IaaS (Infrastructure as a Service) 基础设施即服务 提供的是底层的计…