参考: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 ultrafast -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 URLrtsp_url = 'rtsp://localhost:554/live'# 创建视频捕获对象cap = cv2.VideoCapture(rtsp_url)# 设置解码器的四字符代码为 H264cap.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 subprocessimport pyaudiourl = "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 subprocessdef 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)