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

avatar
作者
筋斗云
阅读量:3

参考: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查看:
在这里插入图片描述
在这里插入图片描述

或者ffplay 命令行工具进行播放

 ffplay rtsp://127.0.0.1:10054/kkk 

二、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)   

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!