AAA 6cc6863294 fix(media): recover H264 selection and isolate rejected ICE candidates
## Problem and outcome / 问题与结果

Windows native H.264 startup trusted the first enumerated hardware encoder. A failing GPU/driver could end sharing even when another encoder worked. The shared capture/relay selector now tries hardware candidates within its existing startup budget, verifies actual H.264 output, and retains the selected backend for later source/quality changes. Explicit H.264 never silently becomes VP8.

A browser ICE candidate rejected with `OperationError` also aborted the remaining queue and could prevent the Viewer from answering. The shared candidate receiver now records that rejection and continues; description/lifecycle errors still propagate, and transport state and the existing route deadline retain failure authority.

The launcher no longer prefills the Demo address. Site mode and its explicit origin authorization remain unchanged.

## Release notes

### 中文

这是一次兼容性修复更新,改善 Windows App 的 H.264 分享启动和浏览器的媒体连接建立。

- 首选硬件编码器无法工作时,尝试其他可用的 H.264 硬件编码器;手动选择 H.264 时仍保持该编码格式。
- 修复单条被拒绝的 ICE 候选中断后续候选处理、导致连接建立失败的问题。
- App 的已有站点地址不再预填 Demo;已保存的地址保持不变。

协议和配置格式不变,可直接升级。缺少双方诊断报告的现场连接失败仍待核实。

### English

This maintenance update improves H.264 sharing startup in the Windows App and media connection setup in browsers.

- Try other available H.264 hardware encoders when the preferred encoder cannot work. Manually selected H.264 remains H.264.
- Fix a rejected ICE candidate interrupting subsequent candidate processing and preventing connection setup.
- Stop prefilling the Demo address in App Site mode while preserving saved addresses.

Protocol and configuration formats are unchanged; no migration is required. Reported connection failures without matched diagnostics remain unconfirmed.

## Verification / 验证

- `npm run check`: 74 test files / 1,057 tests, type-check and Web build passed.
- Documentation and repository hygiene checks passed.
- `npm run check:go`: formatting, Go tests/vet, Windows/Linux core builds and Windows native regressions/compile passed. Darwin cgo packaging belongs to the native macOS CI runner.
- Real hardware: a preferred AMD encoder failed activation; the selector reached a working NVIDIA H.264 encoder without changing codec. Local native Host gate passed decoded Viewer frames, live quality changes, source replacement and cleanup.
- Browser Host/Viewer queue regressions fail before the ICE repair and pass afterward. Chrome 152 rejected an injected mismatched media identifier, then connected using valid candidates.
- External-host public invitation HTTP/WebSocket gate and native H.264 RTP delivery gate passed. The remote Pion gate establishes RTP receipt, not physical remote decoding or endurance.

## Impact / 影响

Patch release v1.6.1; no wire, persistence, route-policy or dependency changes. Browser/App/Server public compatibility is preserved. Shared media/routing owners and scoped research/TODO are updated; unknown reporter causes remain explicit.

No claim of universal H.264 driver recovery, improved NAT success on every network, or a fix for provider HTTP 1033. Site-mode redesign and 4K remain outside this phase.
2026-09-22 08:34:28 +08:00

Piik mascot

Piik

Share the good stuff.
Private screen sharing for you and up to 20 friends.

Website · Download · Gitee mirror · Use online · Documentation

License: MIT Up to 20 viewers P2P-first media

English · 简体中文

Piik is a free, open-source screen sharing tool for games, movie nights, drawings and photos. Choose what to share and send an invitation. Your friends watch in their browsers.

A little room · Show / hide animation

A host with a gold crown switches between a gamepad, paintbrush, camera and remote as friends watch games, drawings, photos and a film.

Features · Get started · Self-hosting · Contributing

Features

  • Watch without installing. Friends join by invitation in a desktop or mobile browser.
  • Share from Piik App or an existing Piik site. Choose a screen, window, browser tab or camera; available sources and audio depend on the platform.
  • Direct connections first. Media travels between participants where possible (P2P). A self-hosted server can provide automatic media forwarding (SFU) as a fallback.
  • Rooms you control. Invitations, room codes and optional room passwords, for one host and up to 20 viewers.
  • Flexible viewing. Light and dark themes, playback controls, picture-in-picture and a connection topology view.
  • One program to host a site. Web UI, room management and optional media forwarding are packaged together.

Piik room: a shared game, playback controls and friends on a sofa. The host wears a small gold crown.
Interface preview · Sample room with a generated game scene

Get started

To watch: open the invitation your friend sends you. Select Play if the picture does not start automatically.

To share: download Piik App to get started. To share without installing, you can also create a room in the online version.

Start here What you need to do
Use Piik online Share from a desktop browser, or choose Camera on a phone with browser camera support.
Download Piik App Extract and open the App, choose Public invite, then Open Piik to create a temporary room.
Host your own site Advanced: deploy Piik Server on a Linux x64 server with your own domain, then connect through Piik App or a browser.

Choose a screen, send an invitation, watch together.

  1. Select Start sharing, then choose the picture and audio to share.
  2. Select Copy invite link and send it to your friends. Keep the sharing tab open.

Turn on the Microphone for commentary; its settings let you choose the input device and adjust your voice volume.

Piik follows your system language: Chinese or English, with English as the fallback. Use 中 / EN / ✦ in the header to switch language or try the visual mode. The App offers a local room, a temporary public link, or a connection to your own site. Keep the App running while sharing through it.

Download a ZIP beginning with piik-app. The filename also identifies the platform:

Filename contains Platform
windows-amd64 Windows x64
darwin-arm64 Apple silicon; native capture requires macOS 13+
linux-amd64 Linux x64

Full setup guide → · Open online →

Browser capture requires HTTPS or localhost. Windows App and desktop browser sharing are the primary tested paths. The macOS and Linux apps have not yet been tested on physical devices; test results and feedback are welcome. P2P-only modes, including the App's temporary public link and the online version, may not connect on restrictive networks.

Self-hosting

Piik Server is a standalone binary with the web interface built in. Download the Linux x64 Server package (piik-<revision>-runtime.tar.gz), extract it, and run:

./piik-server

Open http://localhost:8787 to try it locally. For a public site, configure your domain, HTTPS reverse proxy and STUN address. Room data is stored in SQLite. For containers, use the Docker Compose setup.

Deploy your own site → · Configuration · Run from source

Contributing

Bug reports, translations, documentation improvements and pull requests are welcome. See ways to contribute or help translate Piik. Use the repository layout to find your way around.

License

Piik-owned code is MIT licensed. Dependencies retain their own licenses and notices.

S
Description
Free, open-source screen sharing for friends. P2P-first, with browser viewing, a desktop app and optional self-hosting.
https://piik.tv
Readme MIT
9.7 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 46.2%
Go 36.5%
C++ 5.9%
JavaScript 5%
CSS 2.5%
Other 3.9%