照顾新手!额,算了,大家都是大佬~此处略过
没啥说的,双击都行
命令行启动:
rtsp-simple-server.exe
(建议命令行启动)
运行以后就是长这个鬼样子的,我们要关注的就是tcp的端口号,ok,下一步
!呕吼,等等、等等,细心的朋友可能发现了,下面不是有个rtmp嘛~是的,恭喜你发现了新大陆!回头一点要自己试一下哦。
如果想把本地文件推出去使用下面的命令即可,参数请自行调整食用。
推流命令:
ffmpeg -re -stream_loop -1 -i (你的文件名) -c copy -f rtsp rtsp://127.0.0.1:8554/video
#简单对参数说明
-re 是以流的方式读取
-stream_loop -1 表示无限循环读取
-i 就是输入的文件
-f 格式化输出到哪里
当然我们还有另一种需求:
把拉过来的流,处理之后再推出去。
拉流-----处理-----推流
这里和rtmp推流方法基本一致
需要把command中
-f 后 ‘flv’ 改为 ’rtsp’
rtmpurl 改为 rtsp 推流地址即可
rtsp_url = 'rtsp://127.0.0.1:8554/video'
cap = cv2.VideoCapture(“拉流地址”)
fps = int(cap.get(cv2.CAP_PROP_FPS))
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
command = ['ffmpeg',
'-y',
'-f', 'rawvideo',
'-vcodec', 'rawvideo',
'-pix_fmt', 'bgr24',
'-s', "{}x{}".format(width, height),
'-r', str(fps),
'-i', '-',
'-c:v', 'libx264',
'-pix_fmt', 'yuv420p',
'-preset', 'ultrafast',
'-f', 'rtsp',
rtsp_url]
p = sp.Popen(command, stdin=sp.PIPE)
while (cap.isOpened()):
ret, frame = cap.read()
if not ret:
print("Opening camera is failed")
break
frame = 你的图像处理的函数(frame)
p.stdin.write(frame.tostring())
来来来,刚刚学到的拉流又能用到了~趁热打铁、再来一次
import cv2
cap = cv2.VideoCapture("rtsp://127.0.0.1:8554/video")
while (cap.isOpened()):
ret, frame = cap.read()
if not ret:
print("Opening camera is failed")
break
cv2.imshow('起个名字',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
当然,如果这几行代码你也不愿意写的话~我只能教你一点别的办法了
VLC media player
下载地址:https://www.videolan.org/vlc/index.html
运行之后选择媒体----网络串流----网络----填写地址(刚刚rtsp推流的地址)----选择播放
(这里有个简单的方法,打开vlc之后直接把网址 ctrl+v 粘贴 点确定就可以了)
迅雷影音 新手推荐
如果只是想看能不能推流,用这个试一下吧,对新手比较友好,有迅雷的直接使用就行,不需要再下载安装软件了,但是用起来确实不如vlc
下载地址:算了自己找吧~
食用方法:打开之后在中间的 框框中输入rtsp推流的地址就ok了
qq影音
使用同迅雷影音
…
总有一款适合你
ok 大功告成~
rtsp推流1、下载rtsp 服务器下载网址:https://github.com/aler9/rtsp-simple-server/releaseswindows环境下选择windows_amd64.zip文件下载2、配置环境变量照顾新手!额,算了,大家都是大佬~此处略过3、启动没啥说的,双击都行命令行启动:rtsp-simple-server.exe(建议命令行启动)运行以后就是长这个鬼样子的,我们要关注的就是tcp的端口号,ok,下一步!呕吼,等等、等等,细心的朋友可能发现
播放思路:
1.首先通过IPCAM的ip与用户等信息获得rtsp码:
海康新版IPCAM的rtsp地址规则为:rtsp://用户名:密码@设备IP地址/Streaming/Channels/通道号及编码类型。
如:rtsp://admin:12345@172.6.22.234:554/Streaming/Channels/1...
[python] ffmpeg-python读取rtsp(tcp方式)
在多路无线摄像头同时接入时,网络不稳定,经常出现雪花屏的问题。参考网上资料,怀疑是网络摄像头默认使用RTSP协议,RTSP下层默认使用UDP传输,而UDP传输是不可靠的,会丢包,所以导致雪花屏。
RTSP使用TCP或者UDP传输,使用TCP还是UDP取决于客户端的SETUP请求。所以尝试将由UDP改为TCP取流。
opencv-python的videocapture获取rtsp只支持UDP方式,改为用FFmpeg-python
ffmpeg -i <input> -c copy -f rtsp -rtsp_transport tcp rtsp://<server>:<port>/<stream_name>
其中,`<input>` 是你要推流的输入文件的路径,`<server>` 是你的 RTSP 服务器的地址,`<port>` 是你的 RTSP 服务器使用的端口,`<stream_name>` 是你希望在 RTSP 服务器上为你的流命名的名称。
例如,如果你要将本地文件 `input.mp4` 推流到你的 RTSP 服务器上,并命名为 `my_stream`,你可以使用以下命令:
ffmpeg -i input.mp4 -c copy -f rtsp -rtsp_transport tcp rtsp://localhost:8554/my_stream
希望这能帮到你!