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

参考: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)


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为什么都说”一入Java深似海“?

引言 在当今数字化时代,编程已经成为一项至关重要的技能。而在众多编程语言中,Java以其广泛的应用领域和强大的功能特性,吸引了无数开发者的目光。无论是Web开发、移动应用还是大数据处理,Java都发挥着举足轻重的作用。然而&…

AI预测福彩3D第24弹【2024年4月2日预测--第6套算法开始计算第1次测试】

今天,咱们进行第6套算法测试,本套算法将结合012路直选共27种组合,同时考虑了对012路的和值进行统计分析。今天为第1次测试,好了,废话不多说了。直接上结果~ 仍旧是分为两个方案,1大1小。 经过人工神经网络计…

Windows server 2019搭建域服务(保姆版)

准备两台虚拟机:windows server 2019(作为服务器,域管理员在此机器上),windows 10(7、8、11都可以,作为域成员)本文实验虚拟机时windows server 2019和windows10 前提,同…

IP广播网络音频解码播放终端SV-7101SIP-7101 SIP播放解码器

IP广播网络音频解码播放终端SV-7101SIP-7101 SIP播放解码器 一、描述 SIP-7101是我司的一款壁挂式SIP网络播放终端,具有10/100M以太网接口,配置一路继电器输出和一路线路输出,可将内部音源输出到外接功放,可实现广播播放功能。S…

非关系型数据库--------------Redis配置与优化

目录 一、关系型数据库与非关系型数据库 1.1关系型数据库 1.2非关系型数据库 1.2.1非关系型数据库产生背景 1.3关系型非关系型区别 二、Redis 2.1redis简介 2.2Redis命中机制和淘汰机制 2.3Redis 具有以下优点 2.3.1具有极高的数据读写速度 2.3.2redis支持丰富的数据…

GoogleNet神经网络介绍

一、简介 GoogleNet,也称为GoogLeNet,是谷歌工程师设计的一种深度神经网络结构,它在2014年的ImageNet图像识别挑战赛中取得了冠军。该神经网络的设计特点主要体现在其深度和宽度上,通过引入名为Inception的核心子网络结构&#x…

红酒:红酒的分类标准与市场细分

红酒的分类标准与市场细分是红酒产业中非常重要的概念。通过对红酒进行分类,可以更好地满足不同消费者的需求,提升红酒的市场份额和品牌影响力。 首先,红酒的分类标准可以根据不同的维度进行划分。常见的分类标准是根据葡萄酒的口感、香气、颜…

RK3588 NPU研究(一)

使用NPU进行AI计算,具体对应模型推理 对应代码位置 hardware/rockchip/rknpu2 examples: yolo5 编译 下载NDK工具https://developer.android.google.cn/ndk/downloads?hlzh-cn源码中使用16b,测试可以使用16/17/18/19/20,不可以使用21&…

开源代码分享(17)—基于yalmip+cplex的微电网优化调度(附matlab代码)

1基本概念 微网(Micro-Grid,MG)是进行电能调度时常见的概念,作为组织各分布式单元的结构。微网概念的提出旨在实现分布式电源的灵活、高效应用,解决数量庞大、形式多样的分布式电源并网问题[8]。微网中集成了电源、储能…

DS1302时钟芯片

目录 DS1302简介 前言 DS1302内部结构 理解: DS1302引脚图 DS1302常用寄存器 寄存器控制指令 解释: 常用寄存器指令 DS1302控制时序 单字节读 代码辅助理解 单字节写 代码辅助理解 仿真案例 电路图 keil文件 DS1302简介 前言 DS1302…

Pycharm环境配置完整教程

目录 python解释器下载 检查是否正确安装 Pycharm下载 Pycharm环境配置 本文主要介绍python解释器安装、Pycharm环境配置以及运行第一个程序的零基础的教程,即使是python小白也能正确配置相应的python学习环境哦! python解释器下载 官网地址&#…

在jupyter notebook中使用conda环境

在jupyter notebook中使用conda环境 1. 环境配置 conda activate my-conda-env # this is the environment for your project and code conda install ipykernel conda deactivateconda activate base # could be also some other environment conda install nb_cond…

java学习之路-数组定义与使用

目录 ​编辑 1.什么是数组 2.数组的创建及其初始化 2.1数组的创建 2.2数组的初始化 3.数组的使用 3.1数组元素访问 3.2遍历数组 4.数组是引用类型 4.1jvm的内存分布 4.2基本类型变量与引用类型变量的区别 4.3引用变量详解 4.4 null 5.数组的使用场景 5.1存储数据 5…

【网课必备】学浪视频下载到本地

学浪作为知识付费平台,拥有大量的课程,所以很多人在学浪上购买自己的课程,但是学浪官方没有提供下载选项,只可以在学浪客户端软件观看,并不是很方便 于是为了解决这一个需求,小白老师s开发了学浪视频下载到…

uniapp 开发之原生Android插件

开发须知 在您阅读此文档时,我们假定您已经具备了相应Android应用开发经验,使用Android Studio开发过Android原生。也应该对HTML,JavaScript,CSS等有一定的了解, 并且熟悉在JavaScript和JAVA环境下的JSON格式数据操作等。 为了插件开发者更方便快捷的开…

verdi出现的问题

仿真时Verdi出现的问题: User Defined system task or function ($fsdbDumpfile) registered during elaboration and used within the simulation has not been registered during simulation. 解决方法:在run脚本中加上以下设置 又遇到如下问题&#x…

基于kmeans的聚类微博舆情分析系统

第一章绪论 1.1研究背景 如今在我们的生活与生产的每个角落都可以见到数据与信息的身影。自从上十世纪八十年代的中后期开始,我们使用的互联网技术已经开始快速发展,近些年来云计算、大数据和物联网等与互联网有相领域的发展让互联网技术达到了史无前例…

揭秘阿里巴巴面试题:JVM垃圾回收存活算法和两次标记过程

大家好,我是你们的小米。今天我们来聊聊一个热门话题,那就是阿里巴巴的面试题:JVM垃圾回收存活算法和两次标记过程。作为一个热爱技术、乐于分享的小米,我将会带领大家一起深入探讨这个话题。 引用计数法 首先,我们来了解一下引用计数法。这是一种简单直观的垃圾回收算法…

备战蓝桥杯---刷杂题1

1.来个小定理(上次DP的青蛙过河用过) 事实上,假如他们的gcd!1,那么P,q都可以表示成gcd的倍数,因此假如一个数不是gcd的倍数就不可以表示,若互质由裴蜀定理大于一定时一定可以表示出。 事实上为&#xff08…

关于 QSound播放wav音频文件,播放失败“using null output device, none available” 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/137264493 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…