diff --git a/.github/ISSUE_TEMPLATE/camera_report.yml b/.github/ISSUE_TEMPLATE/camera_report.yml index 09f4006a..0ea62dfc 100644 --- a/.github/ISSUE_TEMPLATE/camera_report.yml +++ b/.github/ISSUE_TEMPLATE/camera_report.yml @@ -1,4 +1,4 @@ -name: Camera report +name: "Camera report / 摄像机报告 / Отчёт о камере" description: Report how OpenIPC Decoder plays a camera (IP camera, NVR channel, encoder, RTSP server) title: "[Camera]: " labels: ["camera-report"] @@ -8,12 +8,16 @@ body: value: | Thanks for testing! Camera reports help other users and show which streams need work. **Remove the password from the URL** (write `user:***`) and do not post public IP addresses. - The app version and build hash are shown in the menu next to **Exit**, for example `v2.00, 1dda076`. + The app version is shown in the menu next to **Exit**, for example `v2.02`. + + 感谢测试!可以用中文填写。**请从 URL 中删除密码**(写成 `user:***`),不要公开 IP 地址。 + + Спасибо за тестирование! Можно писать по-русски. **Уберите пароль из URL** (`user:***`) и не публикуйте внешние IP-адреса. - type: input id: manufacturer attributes: - label: Manufacturer + label: "Manufacturer / 厂商 / Производитель" placeholder: "Hikvision, Dahua, XM (Xiongmai), OpenIPC board, ..." validations: required: true @@ -21,7 +25,7 @@ body: - type: input id: model attributes: - label: Model + label: "Model / 型号 / Модель" description: Model as printed on the label or shown in the camera's web interface placeholder: "DS-2CD1023G0-I, IPC-HFW1230S, SSC335 board, ..." validations: @@ -30,38 +34,38 @@ body: - type: dropdown id: firmware_kind attributes: - label: Firmware + label: "Firmware / 固件 / Прошивка" options: - OpenIPC (Majestic) - OpenIPC (other streamer) - Stock / vendor firmware - - Other + - "Other / 其他 / Другое" validations: required: true - type: input id: firmware_version attributes: - label: Firmware version (optional) + label: "Firmware version (optional) / 固件版本(可选) / Версия прошивки (необязательно)" description: "OpenIPC: `cat /etc/os-release` or the web interface; vendor firmware: version and date" placeholder: "OpenIPC 2.6.10.12 lite / V5.5.0 build 180206" - type: input id: soc attributes: - label: Processor / SoC (optional) + label: "Processor, SoC (optional) / 处理器、芯片(可选) / Процессор, SoC (необязательно)" placeholder: "SigmaStar SSC335, HiSilicon Hi3516EV300, Goke GK7205V300, Ingenic T31, ..." - type: input id: sensor attributes: - label: Image sensor (optional) + label: "Image sensor (optional) / 图像传感器(可选) / Сенсор (необязательно)" placeholder: "SC2336, IMX307, GC2053, ..." - type: input id: url attributes: - label: RTSP URL + label: "RTSP URL / RTSP 地址 / RTSP URL" description: The URL that works in the app, with the password replaced by `***`. The path matters most (`/stream=0`, `/Streaming/Channels/101`, `/cam/realmonitor?channel=1&subtype=0`, ...) placeholder: "rtsp://admin:***@192.168.1.10:554/stream=0" validations: @@ -70,7 +74,7 @@ body: - type: textarea id: other_urls attributes: - label: Other streams (optional) + label: "Other streams (optional) / 其他码流(可选) / Другие потоки (необязательно)" description: Substream, MJPEG or other paths of the same camera, one per line placeholder: | rtsp://admin:***@192.168.1.10:554/stream=1 — substream 704x576 @@ -79,39 +83,39 @@ body: - type: dropdown id: video_codec attributes: - label: Video codec + label: "Video codec / 视频编码 / Видеокодек" multiple: true options: - H.264 - H.265 - MJPEG - - Other + - "Other / 其他 / Другое" validations: required: true - type: input id: video_format attributes: - label: Resolution, frame rate, bitrate (optional) + label: "Resolution, frame rate, bitrate (optional) / 分辨率、帧率、码率(可选) / Разрешение, частота кадров, битрейт (необязательно)" placeholder: "1920x1080, 25 fps, 4 Mbit/s, key frame every 1 s" - type: dropdown id: audio_codec attributes: - label: Audio codec + label: "Audio codec / 音频编码 / Аудиокодек" options: - - No audio + - "No audio / 无音频 / Без звука" - AAC - Opus - G.711 (PCMU / PCMA) - L16 / PCM - G.726 - - Other / unknown + - "Other, unknown / 其他、未知 / Другое, неизвестно" - type: checkboxes id: transports attributes: - label: Transports that work + label: "Transports that work / 可用的传输方式 / Работающие транспорты" description: Menu → slot URL dialog (single view) → TCP / UDP / Auto / Multicast; "UDP push" = the camera sends RTP to a `udp://` slot or the U cell options: - label: TCP @@ -123,62 +127,62 @@ body: - type: dropdown id: auth attributes: - label: Authentication + label: "Authentication / 认证 / Аутентификация" options: - - None + - "None / 无 / Нет" - Basic - Digest - Credentials in the URL path (e.g. user=…_password=…) - - Unknown + - "Unknown / 未知 / Неизвестно" - type: checkboxes id: limits attributes: - label: Camera limits + label: "Camera limits / 摄像机限制 / Ограничения камеры" options: - - label: Accepts only one RTSP client at a time - - label: Needs a reconnect after the camera reboots (the app does not recover by itself) + - label: "Accepts only one RTSP client at a time / 同时只接受一个 RTSP 客户端 / Принимает только одного RTSP-клиента" + - label: "Needs a reconnect after the camera reboots / 摄像机重启后需要手动重连 / После перезагрузки камеры нужно переподключение" - type: input id: app_device attributes: - label: App version and device + label: "App version and device / 应用版本和设备 / Версия приложения и устройство" description: App version from the menu, and the device it ran on - placeholder: "v2.00, 1dda076 on AG-216 (Android 10)" + placeholder: "v2.02 on AG-216 (Android 10)" validations: required: true - type: dropdown id: result attributes: - label: Overall result + label: "Overall result / 总体结果 / Общий результат" options: - - Works - - Works with issues - - Does not work + - "Works / 正常 / Работает" + - "Works with issues / 可用但有问题 / Работает с проблемами" + - "Does not work / 不能用 / Не работает" validations: required: true - type: checkboxes id: works attributes: - label: What works + label: "What works / 哪些功能正常 / Что работает" options: - - label: Picture in single view - - label: Picture in multi-view - - label: Audio - - label: WebUI - - label: Debug page shows the stream (http://:8085/) + - label: "Picture in single view / 单画面图像 / Картинка в одиночном виде" + - label: "Picture in multi-view / 多画面图像 / Картинка в мультивью" + - label: "Audio / 音频 / Звук" + - label: "WebUI" + - label: "Debug page shows the stream (http://:8085/) / 调试页面显示码流 / Отладочная страница показывает поток" - type: textarea id: comment attributes: - label: Comment (optional) + label: "Comment (optional) / 备注(可选) / Комментарий (необязательно)" description: Anything that did not work or looked wrong, settings you had to change on the camera, delay, picture artefacts, ... - type: textarea id: logs attributes: - label: Log (optional) + label: "Log (optional) / 日志(可选) / Лог (необязательно)" description: "With USB/network debugging enabled: `adb logcat -d -s OpenIPCDecoder`, or `http://:8085/log`. Check that no password is in it." render: text diff --git a/.github/ISSUE_TEMPLATE/device_report.yml b/.github/ISSUE_TEMPLATE/device_report.yml index e03793cd..f50ea383 100644 --- a/.github/ISSUE_TEMPLATE/device_report.yml +++ b/.github/ISSUE_TEMPLATE/device_report.yml @@ -1,32 +1,36 @@ -name: Device report +name: "Device report / 设备报告 / Отчёт об устройстве" description: Report how OpenIPC Decoder works on your phone, tablet, TV, set-top box or car device -title: "[Device]: " +title: "User test report / 用户测试报告 / Отчёт о тестировании от пользователя" labels: ["device-report"] body: - type: markdown attributes: value: | Thanks for testing! Reports are collected into the **Verified devices** table in the README. - The app version and build hash are shown in the menu next to **Exit**, for example `v2.00, a9ac8df`. + The app version is shown in the menu next to **Exit**, for example `v2.02`. + + 感谢测试!可以用中文填写。应用版本显示在菜单中 **Exit** 旁边。 + + Спасибо за тестирование! Можно писать по-русски. Версия приложения — в меню рядом с **Exit**. - type: dropdown id: device_type attributes: - label: Device type + label: "Device type / 设备类型 / Тип устройства" options: - - Phone - - Tablet - - TV - - Set-top box - - Car device / mirror - - Other + - "Phone / 手机 / Телефон" + - "Tablet / 平板 / Планшет" + - "TV / 电视 / Телевизор" + - "Set-top box / 机顶盒 / ТВ-приставка" + - "Car device, mirror / 车载设备、后视镜 / Автомобильное устройство, зеркало" + - "Other / 其他 / Другое" validations: required: true - type: input id: model attributes: - label: Manufacturer and model + label: "Manufacturer and model / 厂商和型号 / Производитель и модель" placeholder: "Samsung Galaxy A51 (SM-A515F)" validations: required: true @@ -34,7 +38,7 @@ body: - type: input id: android attributes: - label: Android version / firmware + label: "Android version, firmware / Android 版本、固件 / Версия Android, прошивка" description: Android version, plus the vendor firmware if it is not stock (ColorOS, SlimBOXtv, ...) placeholder: "Android 13 / One UI 5.1" validations: @@ -43,59 +47,59 @@ body: - type: input id: soc attributes: - label: SoC and kernel version + label: "SoC and kernel version / 芯片和内核版本 / SoC и версия ядра" description: Settings → About → Kernel version. SoC if known (Amlogic S905X3, Allwinner H313, ...) placeholder: "Exynos 9611, kernel 4.14.113" - type: input id: app_version attributes: - label: App version + label: "App version / 应用版本 / Версия приложения" description: Shown in the menu next to Exit - placeholder: "v2.00, a9ac8df" + placeholder: "v2.02" validations: required: true - type: dropdown id: result attributes: - label: Overall result + label: "Overall result / 总体结果 / Общий результат" options: - - Works - - Works with issues - - Does not work + - "Works / 正常 / Работает" + - "Works with issues / 可用但有问题 / Работает с проблемами" + - "Does not work / 不能用 / Не работает" validations: required: true - type: checkboxes id: works attributes: - label: What works + label: "What works / 哪些功能正常 / Что работает" options: - - label: H.264 video - - label: H.265 video - - label: Audio - - label: Quad mode - - label: Remote control / D-pad - - label: WebUI - - label: Screenshot (long press) + - label: "H.264 video / H.264 视频 / Видео H.264" + - label: "H.265 video / H.265 视频 / Видео H.265" + - label: "Audio / 音频 / Звук" + - label: "Multi-view / 多画面 / Мультивью" + - label: "Remote control, D-pad / 遥控器、方向键 / Пульт, D-pad" + - label: "WebUI" + - label: "Screenshot (long press) / 截图(长按) / Скриншот (долгое нажатие)" - type: textarea id: stream attributes: - label: Camera and stream + label: "Camera and stream / 摄像机和码流 / Камера и поток" description: Camera firmware (OpenIPC or other), resolution, FPS, bitrate, audio codec placeholder: "OpenIPC on gk7205v300, H.265 1920x1080@25, 2 Mbps, AAC 16 kHz" - type: textarea id: notes attributes: - label: Problems and notes + label: "Problems and notes / 问题和备注 / Проблемы и заметки" description: What did not work or looked wrong (cropped picture, no sound, delay, crash, ...) - type: textarea id: logs attributes: - label: Log (optional) + label: "Log (optional) / 日志(可选) / Лог (необязательно)" description: "With USB/network debugging enabled: `adb logcat -d -s OpenIPCDecoder`" render: text diff --git a/.github/workflows/device-report-title.yml b/.github/workflows/device-report-title.yml new file mode 100644 index 00000000..ba5e95d3 --- /dev/null +++ b/.github/workflows/device-report-title.yml @@ -0,0 +1,23 @@ +name: Device report title + +# Device reports get one fixed title, set here rather than asked from the reporter: the form +# only pre-fills it and people replaced it with anything from a model to a problem (#120, #159) +on: + issues: + types: [opened, edited, labeled] + +permissions: + issues: write + +jobs: + title: + if: contains(github.event.issue.labels.*.name, 'device-report') && github.event.issue.title != 'User test report / 用户测试报告 / Отчёт о тестировании от пользователя' + runs-on: ubuntu-latest + steps: + - name: Set the title + env: + GH_TOKEN: ${{ github.token }} + REPO: ${{ github.repository }} + NUMBER: ${{ github.event.issue.number }} + TITLE: User test report / 用户测试报告 / Отчёт о тестировании от пользователя + run: gh issue edit "$NUMBER" --repo "$REPO" --title "$TITLE"