{"id":26956260,"url":"https://github.com/jiuxiajingfan/autoupdatecamera","last_synced_at":"2026-05-19T10:04:16.379Z","repository":{"id":283774374,"uuid":"952639768","full_name":"jiuxiajingfan/autoUpdateCamera","owner":"jiuxiajingfan","description":"通过ffmpeg记录摄像头画面并上传至相关云平台存储。use ffmpeg to record camera and upload to  cloud","archived":false,"fork":false,"pushed_at":"2025-04-02T07:11:23.000Z","size":46,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T08:23:51.447Z","etag":null,"topics":["alist","camera","ffmpeg","golang"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jiuxiajingfan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-21T16:07:55.000Z","updated_at":"2025-04-02T07:13:34.000Z","dependencies_parsed_at":"2025-03-22T05:21:26.856Z","dependency_job_id":"88e14fa5-298e-480a-8656-a0a3f2081a7d","html_url":"https://github.com/jiuxiajingfan/autoUpdateCamera","commit_stats":null,"previous_names":["jiuxiajingfan/autoupdatecamera"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jiuxiajingfan/autoUpdateCamera","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiuxiajingfan%2FautoUpdateCamera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiuxiajingfan%2FautoUpdateCamera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiuxiajingfan%2FautoUpdateCamera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiuxiajingfan%2FautoUpdateCamera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jiuxiajingfan","download_url":"https://codeload.github.com/jiuxiajingfan/autoUpdateCamera/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiuxiajingfan%2FautoUpdateCamera/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274100797,"owners_count":25222443,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alist","camera","ffmpeg","golang"],"created_at":"2025-04-03T03:20:42.886Z","updated_at":"2026-05-19T10:04:15.672Z","avatar_url":"https://github.com/jiuxiajingfan.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Auto Update Camera Recording\n\n这是一个用于自动录制摄像头视频流的程序。它可以根据配置的时间段自动开始和停止录制，并将视频分段保存，合并后自动上传至相关云存储。\n\n~~其实就是不想开品牌云会员~~\n\n## 系统要求\n\n### 直接运行\n- Go 1.16 或更高版本\n- FFmpeg 已安装并添加到系统 PATH\n\n### Docker 部署\n- Docker\n- Docker Compose\n\n## 安装\n\n### 方式一：直接运行\n\n1. 克隆仓库：\n```bash\ngit clone https://github.com/yourusername/autoUpdateCam.git\ncd autoUpdateCam\n```\n\n2. 编译程序：\n```bash\ngo build\n```\n\n### 方式二：Docker 部署\n\n1. 克隆仓库：\n```bash\ngit clone https://github.com/yourusername/autoUpdateCam.git\ncd autoUpdateCam\n```\n\n2. 创建并编辑环境配置文件：\n```bash\ncp .env.example .env\n# 使用编辑器修改 .env 文件中的配置\n```\n\n3. 构建并启动容器：\n```bash\ndocker-compose up -d\n```\n\n4. 查看日志：\n```bash\ndocker-compose logs -f\n```\n\n5. 停止服务：\n```bash\ndocker-compose down\n```\n\n## 配置\n\n### 方式一：配置文件\n\n编辑 `config.json` 文件来配置程序：\n\n```json\n{\n    \"camera\": {\n        \"ip\": \"192.168.1.100\",\n        \"port\": \"554\",\n        \"username\": \"admin\",\n        \"password\": \"password\",\n        \"stream\": \"/cam/realmonitor?channel=1\u0026subtype=0\"\n    },\n    \"recording\": {\n        \"output_dir\": \"recordings\",\n        \"segment_time\": 300,\n        \"start_hour\": 8,\n        \"start_minute\": 0,\n        \"end_hour\": 18,\n        \"end_minute\": 0\n    },\n    \"upload\": {\n        \"retry_count\": 3,\n        \"retry_delay\": 5,\n        \"keep_local\": true,\n        \"file_pattern\": \"merged_*.mkv\",\n        \"max_file_age\": 30,\n        \"alist_url\": \"http://your-alist-server:5244\",\n        \"alist_user\": \"admin\",\n        \"alist_pass\": \"password\",\n        \"alist_path\": \"/your/upload/path\"\n    }\n}\n```\n\n### 方式二：环境变量\n\n使用环境变量配置程序（推荐用于 Docker 部署）：\n\n```env\n# 时区设置\nTZ=Asia/Shanghai\n\n# 摄像头配置\nCAMERA_IP=192.168.1.100\nCAMERA_PORT=554\nCAMERA_USERNAME=admin\nCAMERA_PASSWORD=password\nCAMERA_STREAM=/cam/realmonitor?channel=1\u0026subtype=0\n\n# 录制配置\nRECORDING_OUTPUT_DIR=/app/recordings\nRECORDING_SEGMENT_TIME=300\nRECORDING_START_HOUR=8\nRECORDING_START_MINUTE=0\nRECORDING_END_HOUR=18\nRECORDING_END_MINUTE=0\n\n# 上传配置\nUPLOAD_RETRY_COUNT=3\nUPLOAD_RETRY_DELAY=5\nUPLOAD_KEEP_LOCAL=true\nUPLOAD_FILE_PATTERN=merged_*.mkv\nUPLOAD_MAX_FILE_AGE=30\nUPLOAD_ALIST_URL=http://your-alist-server:5244\nUPLOAD_ALIST_USER=admin\nUPLOAD_ALIST_PASS=password\nUPLOAD_ALIST_PATH=/your/upload/path\n```\n\n配置说明：\n\n### 摄像头配置\n- `CAMERA_IP`: 摄像头 IP 地址\n- `CAMERA_PORT`: RTSP 端口\n- `CAMERA_USERNAME`: 摄像头用户名\n- `CAMERA_PASSWORD`: 摄像头密码\n- `CAMERA_STREAM`: RTSP 流路径\n\n### 录制配置\n- `RECORDING_OUTPUT_DIR`: 视频保存目录\n- `RECORDING_SEGMENT_TIME`: 每个视频片段的时长（秒）\n- `RECORDING_START_HOUR`: 开始录制的小时（24小时制）\n- `RECORDING_START_MINUTE`: 开始录制的分钟\n- `RECORDING_END_HOUR`: 结束录制的小时（24小时制）\n- `RECORDING_END_MINUTE`: 结束录制的分钟\n\n### 上传配置\n- `UPLOAD_RETRY_COUNT`: 上传失败重试次数\n- `UPLOAD_RETRY_DELAY`: 重试间隔（秒）\n- `UPLOAD_KEEP_LOCAL`: 是否保留本地文件\n- `UPLOAD_FILE_PATTERN`: 要上传的文件匹配模式\n- `UPLOAD_MAX_FILE_AGE`: 文件最大保留天数\n- `UPLOAD_ALIST_URL`: Alist 服务器地址\n- `UPLOAD_ALIST_USER`: Alist 用户名\n- `UPLOAD_ALIST_PASS`: Alist 密码\n- `UPLOAD_ALIST_PATH`: Alist 上传目录路径\n\n## 使用方法\n\n### 直接运行\n\n1. 确保配置文件正确设置。\n\n2. 运行程序：\n```bash\n./autoUpdateCam\n```\n\n### Docker 运行\n\n1. 确保 `.env` 文件正确配置。\n\n2. 启动容器：\n```bash\ndocker-compose up -d\n```\n\n3. 程序会：\n   - 在配置的时间段内自动开始和停止录制\n   - 将视频分段保存\n   - 在录制结束后自动合并视频片段\n   - 尝试压缩合并后的文件（如果压缩有效）\n   - 上传到 Alist 服务器\n   - 根据配置清理本地文件\n\n## 输出文件\n\n- 视频片段：`segment_XXX.mkv`\n- 合并后的视频：`merged_YYYYMMDD.mkv`\n- 压缩后的文件：`merged_YYYYMMDD.zip`（仅当压缩有效时）\n\n## 注意事项\n\n1. 确保 FFmpeg 已正确安装并添加到系统 PATH（直接运行时）。\n2. 确保有足够的磁盘空间存储视频文件。\n3. 确保输出目录有写入权限。\n4. 确保 Alist 服务器地址可访问且配置正确。\n5. 建议定期检查日志确保录制和上传正常。\n\n### Docker 部署注意事项\n\n1. 确保 Docker 和 Docker Compose 已正确安装。\n2. 确保 `.env` 文件中的配置正确。\n3. 容器会自动重启，无需额外的守护进程。\n4. 可以通过 `docker-compose logs -f` 查看实时日志。\n5. 录制的文件会保存在宿主机的 `./recordings` 目录中。\n6. 可以通过 `./data` 目录访问和管理文件。\n\n## 目录说明\n\n- `./recordings`: 主要的录制文件存储目录，程序默认的输出目录\n- `./data`: 用户自定义的访问目录，可以用于文件管理和查看\n\n## 许可证\n\nMIT License \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiuxiajingfan%2Fautoupdatecamera","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjiuxiajingfan%2Fautoupdatecamera","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiuxiajingfan%2Fautoupdatecamera/lists"}