# Docker宝库：MiCam-小米摄像头视频拉取


## 前置条件
必须要安装Docker和DockerCompose

Debian安装流程：[[电脑折腾/玩NAS/安装DockerCompose|安装DockerCompose]]
## 安装
分别执行以下每一行命令：
```bash
## 创建/opt/micam文件夹
mkdir /opt/micam
## 定位到/opt/micam文件夹
cd /opt/micam
## 下载 micam项目的docker compose文件
wget https://raw.githubusercontent.com/miiot/micam/refs/heads/main/docker-compose.yml
## 启动
docker compose up -d
```

> 此命令会通过docker部署Miloco、Go2rtc及RTSP转发服务。如果需要添加多个摄像头，需要编辑`docker-compose.yml`运行多个micam服务。
> 
> 部署的Miloco为基础版，不带AI引擎，无GPU算力要求，大部分机器都能运行。本项目基于官方镜像修改，添加了arm64支持，并默认获取高清流和音频流。

附compose文件内容：
```yml
services:

  # https://github.com/XiaoMi/xiaomi-miloco
  miloco:
    container_name: miloco
    # image: ghcr.nju.edu.cn/xiaomi/miloco-backend # Official image
    image: ghcr.nju.edu.cn/miiot/miloco:main # Modified image to using HD stream
    network_mode: host
    environment:
      BACKEND_PORT: ${MILOCO_PORT:-8000}
      BACKEND_LOG_LEVEL: ${MILOCO_LOG_LEVEL:-warning}
      TZ: ${TZ:-Asia/Shanghai}
    volumes:
      - ./miloco:/app/miloco_server/.temp
    # NOTICE: Mount configuration files, if you want to use your own configuration files, please mount them here.
    #  - ./miloco/server_config.yaml:/app/config/server_config.yaml
    #  - ./miloco/prompt_config.yaml:/app/config/prompt_config.yaml
    restart: unless-stopped

  # https://github.com/AlexxIT/go2rtc
  go2rtc:
    container_name: go2rtc
    image: ghcr.nju.edu.cn/alexxit/go2rtc
    network_mode: host       # important for WebRTC, HomeKit, UDP cameras
    privileged: true         # only for FFmpeg hardware transcoding
    restart: unless-stopped  # autorestart on fail or config change from WebUI
    environment:
      TZ: ${TZ:-Asia/Shanghai}
    volumes:
      - ./go2rtc:/config     # folder for go2rtc.yaml file (edit from WebUI)

  micam1: &micam
    image: ghcr.nju.edu.cn/miiot/micam:main
    depends_on: [miloco, go2rtc]
    environment: &micam_envs
      MILOCO_BASE_URL: ${MILOCO_BASE_URL:-https://miloco:8000}
      MILOCO_PASSWORD: ${MILOCO_PASSWORD}
      CAMERA_ID: ${CAMERA_ID}
      RTSP_URL: ${RTSP_URL}
      VIDEO_CODEC: ${VIDEO_CODEC:-hevc}
      STREAM_CHANNEL: ${STREAM_CHANNEL:-0}
      TZ: ${TZ:-Asia/Shanghai}
    restart: always
    extra_hosts:
      - "miloco:${MILOCO_HOST_IP:-host-gateway}"

  # More Cameras ...
  micam2:
    <<: *micam
    scale: 0 # Disabled by default, set 1 to enable
    environment:
      <<: *micam_envs
      CAMERA_ID: ${CAMERA_2_ID}
      RTSP_URL: ${CAMERA_2_RTSP_URL}
```
## 使用
### 配置Miloco
1. 打开Miloco网页: `https://192.168.1.xx:8000`
    🔐 Miloco使用了自签证书，请通过 **https** 访问，请通过 **https** 访问，请通过 **https** 访问，并忽略证书错误。
2. 设置Miloco密码（6位数字）。
3. 绑定小米账号，之后会提示授权成功，并给出一个授权码。返回，即可打开Miloco主页。
4. 主页会自动显示米家关联的摄像头。如果显示设备离线，需要确保摄像头和miloco在同一局域网，再次刷线网页重试。连不上可查阅：[[Xiaomi Miloco Q&A]](https://github.com/XiaoMi/xiaomi-miloco/issues/56)
5. 摄像头显示正常后，将网页打开开发者模式。例如Chrome浏览器，就按F12进入开发者模式，切换到网络选项卡，刷新网页，从文件列表中找到camera_list,双击点开，找到需要的摄像头的did，记下来。
<!--
c700 did =1180354292
zhongwei did=370049415
-->

### 配置Go2rtc
1. 访问Go2rtc网页: `http://192.168.1.xx:1984/config.html`
2. 配置空视频流:
```yaml
streams:
  your_stream1:
  your_stream2:
```
3. 点击按钮：保存并重启
### 配置miCam
1. 设置环境变量，在控制台定位到/opt/micam文件夹，输入（一行一行的输入）:
```shell
    cat << EOF > .env
    MILOCO_PASSWORD=your_miloco_password_md5
    CAMERA_ID=1234567890 # your camera did
    RTSP_URL=rtsp://192.168.1.xx:8554/your_stream1
    EOF
```
或者直接在文件夹内新建`.env`文件，打开文件，内容输入：
```
    MILOCO_PASSWORD=your_miloco_password_md5
    CAMERA_ID=1234567890 # your camera did
    RTSP_URL=rtsp://192.168.1.xx:8554/your_stream1
```
- MILOCO_PASSWORD 是登录miloco时设置的6位数字密码的32位MD5值（在网上找个MD5在线转换工具就可以生成，例如[[https://www.jyshare.com/crypto/md5/]]）。
- CAMERA_ID 是摄像头的did
- RTSP_URL 是要推流的地址，注意your_stream1替换成配置Go2rtc时填写的stream名称

2. 重启转发服务: `docker compose restart micam1`
3. 这样，在Go2rtc的主页，点击对应stream后边的stream连接，即可查看视频。



