go2rtc 的 HomeKit Server 怎么把 H264 摄像头导出到 Apple Home?
go2rtc 的 HomeKit Server 怎么把 H264 摄像头导出到 Apple Home【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc如果你的摄像头已经在 go2rtc 的streams列表里RTSP、ONVIF、WebRTC 等来源都行想让它出现在 iPhone、Apple TV 或 Apple Home 中go2rtc 的 HomeKit Server 模块可以直接完成这件事它在本地创建一个 HomeKit 摄像头设备把指定 stream 的媒体流封装成 HomeKit 协议对外提供。HomeKit Server 从 go2rtc v1.7.0 开始提供配置本身只有两行起真正的工作量在于让媒体流的编码满足 HomeKit 的硬性限制。开始前必须满足的两个编码限制HomeKit 摄像头对媒体编码只接受一种组合见 internal/homekit/README.md视频H264音频OPUS如果源摄像头原生输出 H264 OPUS直接导出即可否则需要靠 ffmpeg 转码补齐这部分在后面的完整配置里给出来。另外注意 HomeKit Server 依赖 SRTP 模块homekit源在初始化时会检查 SRTP server缺失时直接报错homekit: cant work without SRTP server见 internal/homekit/homekit.go。SRTP 默认启用并监听:8443见 internal/app/README.md 的 Defaults 一节、internal/srtp/README.md通常不需要额外配置。配置方法go2rtc 默认在当前工作目录查找go2rtc.yaml也可用-c指定见 internal/app/README.md。最小配置源摄像头已支持 H264streams: dahua1: rtsp://admin:password192.168.1.123/cam/realmonitor?channel1subtype0 homekit: dahua1: # same stream ID from streams list, default PIN - 19550224homekit下的 key 必须和streams里的 stream ID 完全一致如果 stream 不存在启动日志会出现[homekit] missing stream: id警告并跳过该条目见 internal/homekit/homekit.go所以配好后先看一眼日志确认没有这条警告。完整配置摄像头不输出 H264、或音频不是 OPUS 时streams: dahua1: - rtsp://admin:password192.168.1.123/cam/realmonitor?channel1subtype0 - ffmpeg:dahua1#videoh264#hardware # if your camera doesnt support H264, important for HomeKit - ffmpeg:dahua1#audioopus # only OPUS audio supported by HomeKit homekit: dahua1: # same stream ID from streams list pin: 12345678 # custom PIN, default: 19550224 name: Dahua camera # custom camera name, default: generated from stream ID device_id: dahua1 # custom ID, default: generated from stream ID device_private: dahua1 # custom key, default: generated from stream ID各字段的用途以 internal/homekit/README.md 和 internal/homekit/homekit.go 为准字段作用默认值pinApple Home 配对时使用的 PIN19550224name摄像头在 Home 中显示的名称由 stream ID 生成device_id设备标识影响生成的 MAC 风格 ID由 stream ID 生成device_private设备私钥种子由 stream ID 生成pin未配置时代码会回落到默认值19550224internal/homekit/homekit.go。name、device_id、device_private只在你想固定设备身份时配置保证 Home 里的名称和配对信息在重启后稳定。启动并在 Apple Home 中配对保存go2rtc.yaml后启动 go2rtc。HomeKit Server 启动时会通过 mDNS 发布_hap服务发布在 api 端口上见 internal/homekit/homekit.go、internal/homekit/server.go 中的 mDNS 条目Apple 设备在同一局域网内即可发现它。通过 API 查看设备当前状态拿到配对用 PINGET http://localhost:1984/api/homekit?iddahua1接口返回的 JSON 字段定义见 internal/homekit/server.go未配对时会包含setup_code即 PIN和setup_id字段示例输出值仅为说明字段结构非固定预期{ name: Dahua camera, device_id: AA:BB:CC:DD:EE:FF, paired: 0, setup_code: 19550224, setup_id: A1B2 }在 iPhone 的「家庭」App 中添加配件输入上面拿到的 PIN未配对时就是pin的值默认19550224完成配对。配对成功后再次GET /api/homekit?iddahua1返回中paired变为非 0且不再出现setup_code字段——配对信息以pairings列表写回go2rtc.yaml的homekit.stream.pairings下见 internal/homekit/server.go 的AddPair/PatchConfig。之后重启 go2rtc 不需要重新配对。在 Apple Home 中打开该摄像头即可看到来自dahua1这个 stream 的画面。排查与限制日志出现[homekit] missing stream: xxxhomekit下的 key 与streams中的 ID 不一致或 stream 本身没配。修正 ID 后重启。Home 里设备显示离线Server 端会按配对数量更新 mDNS 状态标志代码注释明确提示「true status is important, or device may be offline in Apple Home」internal/homekit/server.go如果刚配对完就显示离线先确认 go2rtc 与 Apple 设备在同一网络、mDNS 可达。音频听不到或报错再确认流里最终是 OPUS源是 AAC/其他音频时必须走ffmpeg:xxx#audioopus这条转码链。不输出 H264 的摄像头必须走ffmpeg:xxx#videoh264#hardware或同类的#videoh264链这是 HomeKit 的硬性要求不是可选项。多台 HomeKit 摄像头共享一个端口代码注释说明单端口多摄像头「ONLY for Apple devices」其他不发送 host header 的客户端不受支持见 internal/homekit/homekit.go。按 Apple Home 使用没有影响。如果你反过来——想把已有的 HomeKit 摄像头Aqara、Eve、Eufy 等接入 go2rtc 再导出到 Apple Home那是 internal/homekit/README.md 中「Proxy HomeKit camera」描述的代理模式属于另一条配置路径本文不展开。相关文档internal/homekit/README.md、internal/srtp/README.md、internal/app/README.md【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考