rtsp推流

代码:

参考:RTMP、RTSP推流 · 大专栏 

# 导入opencv
import cv2 as cv
import subprocess as sp
rtspUrl = 'rtsp://localhost/test' #将处理后的帧传入管道推流到该地址

def face_detect_demo(img):
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    face_detect = cv.CascadeClassifier('haarcascade_frontalface_alt2.xml')
    # 主要是调整参数
    face = face_detect.detectMultiScale(gray)
    for x, y, w, h in face:
        cv.rectangle(img, (x, y), (x+w, y+h), color=(0, 0, 255), thickness=2)

# 读取实时流
cap = cv.VideoCapture('rtsp://192.168.1.118/190647.sdp') #此处写easypusher在easydarwin的播放地址
# 视频属性
size = (int(cap.get(cv.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv.CAP_PROP_FRAME_HEIGHT)))
sizeStr = str(size[0]) + 'x' + str(size[1])
fps = cap.get(cv.CAP_PROP_FPS)  # 30p/self

# 直播管道输出
# ffmpeg推送RTSP重点:通过管道共享数据的方式
command = ['ffmpeg',
    '-y',
    '-f', 'rawvideo',
    '-vcodec','rawvideo',
    '-pix_fmt', 'bgr24',
    '-s', sizeStr,
    '-r', str(fps),
    '-i', '-',
    '-c:v', 'libx264',
    '-pix_fmt', 'yuv420p',
    '-preset', 'ultrafast',
    '-f', 'rtsp',
    rtspUrl]

#管道特性配置
pipe = sp.Popen(command, stdin=sp.PIPE) #,shell=False

# 循环读取
while cap.isOpened():
    flag, frame = cap.read()
    if not flag:
        break
    face_detect_demo(frame)

    pipe.stdin.write(frame.tobytes())  # 存入管道用于直播
    pass

# 释放摄像头
cap.release()



测试:

1、Windows配置ffmpeg

Windows安装配置ffmpeg_Simple的博客-优快云博客

2、使用EasyDarwin做服务器

Releases · EasyDarwin/EasyDarwin · GitHub

下载解压后,点击EasyDarwin.exe,复制地址到浏览器中

使用手机测试:

一台设备安装EasyPusher

GitHub - EasyDarwin/EasyPusher-Android: 免费组件:简单、高效、稳定、免费的一款标准RTSP/RTP协议直播推送库,支持将H.264/H.265/G.711/G.726/AAC等音视频数据推送到RTSP流媒体服务器(例如EasyDarwin)进行低延时直播或者视频通信,支持Windows、Linux、ARM、Android、iOS等平台,EasyPusher配套EasyDarwin流媒体服务器、EasyPlayer RTSP播放器适用于特殊行业的低延时应急指挥需求! Android迁移到了https://github.com/EasyDarwin/EasyPusher-Android , iOS迁移到了https://github.com/EasyDarwin/EasyPusher-iOS

代码中cap地址写EasyDarwin中的播放地址 

 

另一台设备安装EasyPlayer:

GitHub - tsingsee/EasyPlayer-RTSP-Android: An free, elegant, simple, fast android RTSP/RTMP/HLS/HTTP Player.EasyPlayer support RTSP(RTP over TCP/UDP)version & Pro version,cover all kinds of streaming media!EasyPlayer是一款免费、精炼、高效、稳定的流媒体播放器,分为RTSP版和Pro版本,支持各种各样的流媒体音视频播放!

运行代码后,

复制推流的播放地址到easyplayer中:rtsp://localhost/test

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值