WeChat 애플릿은 실시간 비디오 감시를 실현합니다 [Raspberry Pi 4b+ 기반]

필수 도구: 공용 네트워크 IP가 있는 클라우드 서버, 라즈베리 파이, cis 카메라, nginx 서버, mjpg-stream 플러그인

1. nginx 서버 빌드
Raspberry Pi 및 클라우드 서버가 설치되어 있어야 합니다.

sudo apt-get install nginx

2. csi 서비스를 활성화하기 위한 라즈베리 파이 구성
블로그 참조: 링크
라즈베리 파이 터미널 열기

sudo raspi-config  #调出树莓派配置控制台



Raspberry Pi 카메라를 정상적으로 사용할 수 있는지 테스트하려면 csi 카메라를 켜는 단계를 따르십시오.

raspistill -v -o test.jpg   #拍摄一张图片 至于raspistill的传输可以使用help查看

여기에 포트 충돌 문제가 있을 수 있습니다. 기본 포트는 8080입니다. 열 수 없는 경우 포트 번호를 확인할 수 있습니다.

 pip install whatportis  #安装端口号查看工具
  whatportis ssh  #查看某个服务使用的端口号
 # 也可以
 netstat -an |grep 8080#查看8080端口使用情况
 #然后kill掉占用的端口号再开启我们的服务避免端口冲突

3. mjpg-stream 서비스 구성
참조: 참조 블로그

이해:
mjpg-streamer는 웹캠 카메라에서 이미지를 수집하고 Firefox, Cambozola 및 VLC 플레이어와 같은 ip 기반 네트워크를 통해 스트림 형태로 브라우저에 전송하는 데 사용됩니다. 일부 웹캠 하드웨어 압축 기능을 활용하여 서버 CPU 오버헤드를 줄일 수 있습니다. 임베디드 장치 및 일부 기존 서버를 위한 가볍고 CPU 집약적인 솔루션을 제공합니다. (번역 위키백과) 소스 코드에서는 주로 linuxv의 4l2 인터페이스(v4l2 인터페이스는 하위 버전 커널에 존재하지 않으므로 사용할 수 없음), 소켓 네트워크 프로그래밍 및 다중 스레드 프로그래밍을 중심으로 진행됩니다. 또한 중요한 플러그인 입력 플러그인 및 출력 플러그인이 포함되어 있습니다.
Mjpg-streamer는 하나 이상의 입력 플러그인에서 여러 출력 플러그인으로 JPEG 프레임을 복사하는 웹캠에서 이미지를 캡처하기 위한 오픈 소스 소프트웨어입니다. IP 기반 네트워크를 통해 웹캠에서 Chrome, Firefox, Cambozola, VLC, mplayer 및 MJPG 스트림을 수신할 수 있는 기타 소프트웨어와 같은 다양한 유형의 뷰어로 JPEG 파일을 스트리밍하는 데 사용할 수 있습니다.

Raspberry Pi의
Raspberry Pi 학습 리소스: Raspberry Pi Lab
설치 및 컴파일

공식 웹 사이트: http://sourceforge.net/projects/mjpg-streamer/

$ sudo apt-get install libjpeg-dev subversion imagemagick
$ cd ~/mjpg-streamer-master/mjpg-streamer-experimental
$ make
$ sudo make install

시험:

 mjpg_streamer  -i "input_uvc.so -n -f 10 -r 640x480  -d /dev/video0" -o "output_http.so -p 8080  -w /usr/local/share/mjpg-streamer/www"

구성 파일 start.sh 파일 수정

달리다:

./start.sh

물론 웹에서 사용하는 포트 번호가 8080이므로 포트 번호 충돌 문제는 제외됩니다. 여기에서 mjpg-stream 구성 파일 start.sh를 열어 포트 충돌을 피하기 위해 새 포트 번호를 구성할 수 있습니다. mjpg-stream 서비스로 라즈베리
파이를 연결하여 웹페이지에서 카메라의 실시간 영상을 볼 수 있습니다.

http://localhost:8080/stream.html
http://<devIP>:8080/stream.html
http://<树莓派IP地址>:8080/javascript.html

실시간 사진을 보려면 하나를 선택하고 브라우저에서 엽니다.
여기에서 mjpg-stream을 구성하지 않은 결과인 개방형 웹 비디오 슈퍼 카드를 찾을 수 있습니다. 초당 프레임 수를 구성할 수 있습니다.
여기에서 켤 수 없는 실시간 모니터링의 경우 일반적으로 모션을 켜지 않았기 때문인데 여기에서 다시 모션을 구성하여 카메라의 핫스왑을 지원하도록 할 수 있습니다.

5. nginx 서비스를 사용하여 Raspberry Pi 인트라넷 IP를 공용 네트워크 서버로 리버스 프록시합니다[이 단계는 선택 사항].

6. frp 기술을 사용하여 Raspberry Pi 인트라넷 카메라 서버를 웹 서비스 frp 공식 웹 사이트 학습으로 변환
: Raspberry Pi 측 구성 /etc/nginx/conf.d 구성 파일을 연결하여 frpc.conf 파일 생성

server{
    
    
listen 8080;#服务器使用的端口
server_name localhost #这里一般填写域名,当然也可以是公网ip
location /{
    
    
	proxy_pass http://localhost:8181;#将内网服务转接成端口8181的web服务
}
}

frpc.ini 파일 코드

[common]
server_addr = x.x.x.x #公网ip
server_port = 7000#和frps服务端相连的端口,需要和服务端那边绑定的端口一致
[web]
type =http
local_port =8181 #内网机器开放的服务端口
custom_domains =x.x.x.x #这里最好是域名,公网ip也可以

서버측 구성
frps.conf 생성

server{
    
    
listen 8080;#服务器使用的端口
server_name x.x.x.x #公网ip
location / {
    
    
client_max_body_size 1000m;
#假设frps端口8080
proxy_pass http://127.0.0.1:8181;#内网开发的端口
proxy_redirect off;#重定向关闭
proxy_set_heard X-Real-IP $remote_addr;
proxy_set_heard X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_heard Host $http_host;
proxy_set_heard X-NginX-Proxy true;
}
}

frps.ini

[common]
bind_port =7000;#frps和frpc相连端口
vhost_http_port = 8181 #vhost_http_port 用于接收http请求

7. 인트라넷에 액세스하기 위해 공용 네트워크 IP로 구축된 서비스를 실현하기 위해 클라이언트 및 서버의 frp를 시작합니다.

./frps -c ./frps/ini #启动服务端
./frpc -c ./frpc.ini #启动客户端
#如果需要长期使用要结合其他工具,比如systemd和supervisor

8. 클라우드 서버 오픈에 필요한 포트 @ TOC는
여기에 자세히 적지 않았으니 인터넷에서 직접 검색하시면 됩니다
.

9. WeChat Mini 프로그램에서 실시간 비디오 가져오기

<view class="bj">
    <view class="container">
        <text class="bt">实时视频监控</text>
        <image class="photo" src="http://云服务器地址:使用的端口/?action=stream" mode="aspectFit"></image>
    </view>
</view>

리소스: Android 앱은 비디오 스트리밍을 실현합니다: https://github.com/tancolin/App4Mjpg-streamer.git

Supongo que te gusta

Origin blog.csdn.net/weixin_43673603/article/details/124604863
Recomendado
Clasificación