本地服务器推流至云端

1.把rtsp视频流转化为图片传到云端

import _pickle as cPickle
import gc
import sys
import threading
import cv2
import json
import time
import requests
import base64


def push_image(source, id):
    url = "云端地址"
    headers = {"content-type": "application/json; charset=UTF-8"}
    for image in LoadStreams(source):
        try:
            image = cv2.resize(image[0], (640, 480), interpolation=cv2.INTER_LINEAR)
            image = cv2.imencode(".jpg", image)[1].tostring()
            image = base64.b64encode(image)
            print(sys.getsizeof(image))
            with open("test.txt", "w") as f:
                f.write(str(image))
            id = id
            pyload = {
                "image": str(image),
                "id": id
            }
            # print(task_id)
            json_str_data = json.dumps(pyload)
            response = requests.post(url, headers=headers, data=json_str_data)
            print("response is:", response.text)
        except:
            continue
        finally:
            gc.collect()

class LoadStreams:  # multiple RTSP tasks
    def __init__(self, sources):
        self.sources = [sources]
        self.imgs = [None] * len(self.sources)
        for i, s in enumerate(self.sources):
            self.cap = cv2.VideoCapture(s)
            w = int(self.cap.get(cv2.CAP_PROP_FRAME_WIDTH))
            h = int(self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
            fps = self.cap.get(cv2.CAP_PROP_FPS) % 100
            _, self.imgs[i] = self.cap.read()  # guarantee first frame
            thread = threading.Thread(target=self.update, args=([self.cap, i]), daemon=True)
            print(' success (%gx%g at %.2f FPS).' % (w, h, fps))
            thread.start()
            print('')  # newline

    def update(self, cap, index):
        n = 0
        while cap.isOpened():
            n += 1
            cap.grab()
            if n == 5:
                _, self.imgs[index] = cap.retrieve()
                n = 0
            time.sleep(0.01)  # wait time

    def __del__(self):
        self.cap.release()

    def __iter__(self):
        self.count = -1
        return self

    def __next__(self):
        self.count += 1
        img = self.imgs.copy()
        if cv2.waitKey(1) == ord('q'):  # q to quit
            cv2.destroyAllWindows()
            raise StopIteration
        return img

    def __len__(self):
        return 0 
#
if __name__ == '__main__':
    path = "rtsp://用户名:密码@ip/h264/ch1/main/av_stream"
    push_image(path, "1")

2.云端服务器显示实时视频流

import base64
from flask import Flask, render_template, Response, request
import gc

app = Flask(__name__)
rtsp_frame = {}

def gen(id):
    while True:
        try:
            frame = rtsp_frame[id]
            yield (b'--frame\r\n'
                b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')
        except:
            continue
        finally:
            gc.collect()

@app.route('/video_feed/<id>')  # 该地址返回视频流响应
def video_feed(id):
    return Response(gen(id),
                    mimetype='multipart/x-mixed-replace; boundary=frame')

@app.route("/image", methods=["POST"])
def image():
    data = request.get_json()
    image_str = data["image"]
    image_byte = eval(image_str)
    image_arr = base64.b64decode(image_byte)
    id = data["id"]
    rtsp_frame[id] = image_arr
    return "connect successful"


if __name__ == '__main__':
    app.run(host='云端服务器ip', port=40001, threaded=True)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: hi3516是一款高性能嵌入式处理器,主要用于互联网视频监控领域。而live555则是一款流媒体服务器框架,提供了RTSP、RTCP、RTP、SIP等多种协议的支持,可以实现对音视频流的送和拉取。 将两者结合使用,可以实现一个完整的视频监控系统。具体而言,hi3516可以作为采集端,将摄像头捕捉到的图像和声音通过RTSP等协议发送给live555服务器;而live555服务器则可以对接RTMP等其他协议,将视频流转发给云端或终端用户,并提供合适的安全加密和鉴权机制,保证数据传输的安全性和完整性。 在实际应用中,hi3516和live555推流服务器的组合可以广泛应用于安防、远程教育、直播等领域。用户可以通过相应的接口,实现多个摄像头画面的合并、切换、推流等操作,以满足不同的应用需求。同时,该系统还可以运用AI技术,对图像进行智能分析和处理,提高安全监控的效率和准确性。 ### 回答2: hi3516是华为公司出的高性能视频处理芯片,具有高清晰度、高稳定性、低功耗的特点,广泛应用于视频监控、智能家居、智慧城市等领域。 而live555是一款开源的流媒体服务器,可以支持各种音视频格式的编码和解码,具有广泛的兼容性和良好的性能表现,因此也被广泛应用于视频监控、多媒体直播、会议系统等场景。 将hi3516和live555结合使用,可以搭建具有高性能和稳定性的推流服务器,可以实现实时视频直播、远程监控等功能,可以广泛应用于各种场景,例如智能家居、商业广告宣传、企业培训等。同时,由于系统采用了先进的编解码技术和流媒体传输协议,可以保证视频传输的质量和稳定性,提升用户的使用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值