mirror of
https://github.com/eatfishfish/openpilot-server.git
synced 2026-08-22 04:42:32 +00:00
增加远程、本地查看摄像头功能
This commit is contained in:
@@ -23,7 +23,7 @@
|
||||
|
||||
export ATHENA_HOST='ws://laolang.duckdns.org:7899'
|
||||
export API_HOST='http://laolang.duckdns.org:7898'
|
||||
export MAPBOX_TOKEN='pk.eyJ1Ijoiam5ld2IiLCJhIjoiY2xxNW8zZXprMGw1ZzJwbzZneHd2NHljbSJ9.gV7VPRfbXFetD-1OVF0XZg'
|
||||
export MAPBOX_TOKEN='<自己注册>'
|
||||
|
||||
cd /data/openpilot
|
||||
exec ./launch_openpilot.sh
|
||||
@@ -51,7 +51,108 @@ exec ./launch_openpilot.sh
|
||||
#### 5. 暴露端口和运行docker
|
||||
sudo docker run -p 7899:7899 -p 7898:7898 -p 7888:7888 -p 1201:1201 -p 5888:5888 opsvr:v1
|
||||
|
||||
#### 6.Star me. Thank you.如果觉得很复杂,可以直接看第二步,使用我的服务器。
|
||||
#### 6. 在 openpilot 中启用 H.264 实时画面
|
||||
|
||||
(1) 确保准备好以下文件,并复制到设备的
|
||||
`/data/openpilot/selfdrive/fp/`:
|
||||
|
||||
```text
|
||||
SConscript
|
||||
main.cc
|
||||
streamup845.cc
|
||||
streamup845.h
|
||||
viewer.html
|
||||
websocket_server.py
|
||||
```
|
||||
|
||||
其中 `main.cc` 是 `h264_streamer` 的程序入口,缺少它将无法生成
|
||||
`selfdrive/fp/h264_streamer`。当前发布包如果没有该文件,需要从对应的
|
||||
openpilot/dragonpilot H.264 实现中补齐。
|
||||
|
||||
骁龙 845(C3/C3X,构建架构为 `larch64`)使用
|
||||
`streamup845.cc`。其他 Linux PC/AMD 平台需要同时提供
|
||||
`streamup.cc` 和 `streamup.h`。
|
||||
|
||||
(2) 在 `/data/openpilot/selfdrive/SConscript` 中增加:
|
||||
|
||||
```python
|
||||
SConscript(['fp/SConscript'])
|
||||
```
|
||||
|
||||
(3) 在 `/data/openpilot/system/manager/process_config.py` 的进程列表中增加:
|
||||
|
||||
```python
|
||||
NativeProcess("h264_streamer", "selfdrive/fp", ["./h264_streamer"], always_run),
|
||||
PythonProcess("websocket_server", "selfdrive.fp.websocket_server", always_run),
|
||||
```
|
||||
|
||||
(4) 在 `/data/continue.sh` 中配置远端 WebSocket 服务。`ATHENA_HOST`
|
||||
必须指向服务端 `config.txt` 的 `ws_bind` 公网地址:
|
||||
|
||||
```bash
|
||||
export ATHENA_HOST='ws://your-domain.example:7899'
|
||||
|
||||
# 可选配置,以下为默认值
|
||||
export H264_WS_PORT='8089'
|
||||
export H264_WS_FPS='20'
|
||||
export H264_WS_BITRATE='2000000'
|
||||
export H264_REMOTE_MAX_LATENCY='1.5'
|
||||
```
|
||||
|
||||
通常不要设置 `H264_WS_HOST`。它同时用于设备本地
|
||||
`websocket_server.py` 的监听地址,以及 `h264_streamer` 连接本地服务。
|
||||
不设置时,Python 服务监听 `0.0.0.0:8089`,编码器连接
|
||||
`127.0.0.1:8089`。不要将它设置为公网服务器地址,也不要显式设置为
|
||||
`0.0.0.0`。
|
||||
|
||||
(5) 重新编译并确认生成可执行文件:
|
||||
|
||||
```bash
|
||||
cd /data/openpilot
|
||||
scons -j$(nproc) selfdrive/fp/h264_streamer
|
||||
ls -l selfdrive/fp/h264_streamer
|
||||
```
|
||||
|
||||
如果当前 openpilot 版本不支持指定单个目标,可以直接运行:
|
||||
|
||||
```bash
|
||||
scons -j$(nproc)
|
||||
```
|
||||
|
||||
(6) 服务端需要满足以下条件:
|
||||
|
||||
- 使用支持 H.264 实时画面的新版 `opserver`。
|
||||
- `config.txt` 中 `athena_host`/`ws_bind` 的公网端口可从设备和浏览器访问。
|
||||
- 防火墙、Docker 和路由器同时放行 `http_bind` 与 `ws_bind`,例如 TCP
|
||||
`7898` 和 TCP `7899`。
|
||||
- 网页必须连接 `ws_bind` 对应的 WebSocket 端口。如果网页从
|
||||
`http://domain:7898` 打开,而脚本使用 `location.host`,它会错误连接
|
||||
`7898`。应通过反向代理把 H.264 WebSocket 请求转发到 `7899`,或者在
|
||||
网页中明确使用 `ws_bind` 的公网地址。
|
||||
- HTTPS 页面必须使用 `wss://`,不能连接明文 `ws://`;推荐使用 Nginx、
|
||||
Caddy 等为 HTTP 和 WebSocket 提供同一 HTTPS 域名。
|
||||
- 浏览器需要支持 WebCodecs H.264,建议使用新版 Chrome 或 Edge。
|
||||
|
||||
(7) 重启后检查进程和端口:
|
||||
|
||||
```bash
|
||||
sudo reboot
|
||||
|
||||
# 重连 SSH 后执行
|
||||
pgrep -af 'h264_streamer|websocket_server'
|
||||
ss -lntp | grep 8089
|
||||
```
|
||||
|
||||
局域网测试:
|
||||
|
||||
```text
|
||||
http://<设备IP>:8089/viewer.html
|
||||
```
|
||||
|
||||
广域网测试:打开服务端网页,输入正确的 Dongle ID,再选择 Road Cam 或
|
||||
Wide Cam。必须先确保设备的 `DongleId` 不为空,并且与网页输入值一致。
|
||||
|
||||
#### 7.Star me. Thank you.如果觉得很复杂,可以直接看第二步,使用我的服务器。
|
||||
|
||||
# openpilot-server for english
|
||||
|
||||
|
||||
Reference in New Issue
Block a user