树莓派监听转发摄像头到远程服务器

 

用途:项目需求网页有实时视频功能,可以没有声音,大致原理树莓派开启usb摄像头并启动到本地端口可以通过不断请求图片的形式实现可以通过python做一次转发到服务器上,服务器再转发到网页上,实现网页视频

手动打开摄像头,具体原理不清楚,做硬件的哥哥让我执行就ok

LD_LIBRARY_PATH=/usr/local/lib  mjpg_streamer -i "input_uvc.so" -o "output_http.so -w /usr/local/www"

输入上面代码到树莓派,同一网络电脑打开树莓派ip:8080端口看看有显示的么,如果没有就不用接着看

树莓派上python脚本

 

服务器端

nginx端配置

在树莓派上运行python3 clientCamera.py http://你自己的ip:8080/api/Info

 

 

今天离职了,没树莓派能让我接着写打开摄像头的判断的操作了,如果本文对你有用的话,评论区留个言就是对我最大的鼓励!

import os
import sys
import time
import json
import time

# 传入需要转发的摄像头的外网地址,本地刷新时间
def get(serverAdderss, localPort):
    import requests
    local_img = 'http://127.0.0.1:%s/?action=snapshot&n=1'%localPort
    print(local_img)
    global stopstatus
    try:
        img = requests.get(url=local_img, timeout=1).content
        print('Get local img success')
        try:
            response = requests.post(url=serverAdderss, files={'file': img}, timeout=1).text
            print('send remote server success')
            global isStop
            # 通过判断返回的状态判断是否结束死循环 success为False停止循环,False必须为大写
            isStop = json.loads(response)['success']
            stopstatus = 0
        except:
            stopstatus += 1
            print('send fail')
            if stopstatus > 100:
                print('远程服务器连接失败')
                sys.exit(0)
    except:
        print('本地服务启动可能尚未启动,请检查树莓派')
        stopstatus = stopstatus+1
        if stopstatus > 100:
            sys.exit(0)


def openCamera():
    # 打开启动摄像头脚本
    response = os.popen('LD_LIBRARY_PATH=/usr/local/lib  mjpg_streamer -i "input_uvc.so" -o "output_http.so -w /usr/local/www"').read()

if __name__ == '__main__':
    # java掉python传的参数,或者命令行输底下的示例,记着树莓派安装python和requests库
    param_address = sys.argv[1]
    param_time = float(sys.argv[2])
    param_localPort = sys.argv[3]
    print('传入参数格式:\r外网接口地址\r刷新频率单位(秒)\r本地启动摄影功能服务的端口\n示例 python3 clientCamera.py http://192.168.0.2:8080/api/Camera 1 8080')
    # 是否停止
    stopstatus = 0
    isStop = True
    while isStop:
        get(param_address, param_localPort)
        time.sleep(param_time)

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值