Icyiciro
Tekinoloji
Ibyatangaje bya Dueli mu gice kimwe: ibisobanuro mu rurimi rw'abaturage n'amasomo y'ubushakashatsi.
Iki cyegereranya kibivuga imyitwarire Dueli ikora, mu gice kimwe: igaragaza mu mico myinshi kubantu bose n'igaragaza mu mico y'ubumenyi k'abashinzwe imyitwarire. Oya imyitwarire itarimo iyo kode isanzwe ikora.
Mu mico myinshi
Dueli ikora mu browser kuri murongo wa Cloudflare. Abakora babiri bakenera mu kibanza cy'ikiganiro cya video mu mezi zabo (WebRTC peer-to-peer); iyo murongo uruhitana umurongo w'umurongo, umurongo wa TURN uhindura umurongo.
Mu gihe cy'imikino, browser ikomora ibice byombi by'amafoto y'ikamera mu kimenyetso kimwe kandi ikandika nk'ibice by'imyaka 5. Ibyo bice byoherezwa iyo byatangira, byakenerwa gukorerwa muri urwo rwego, kandi byungurwa mu gahunda yose nyuma y'imikino.
Imikino yanditswe yashobora kwinjizwa nk'idosiye ya MP4. Iyo idosiye yanditshe isabwa guhindurwa, guhindurwa kora mu browser umukinnyi na FFmpeg.wasm, kugira ngo idosiye isohoke kuri serivisi ya hindurisha ishaka hanze.
Ibyemezo bya platformu biri kuri D1, amapage n'API zubakwa na Hono na TypeScript kuri Cloudflare, n'ikoranabuhanga rikoresha Tailwind CSS. Ibyahinduwe byinjira mu kibanza kuri SSE na polling.
Kubashinzwe imyitwarire
Igikora: Cloudflare Pages/Workers na Hono 4 kuri TypeScript. D1 (SQLite) ni idosiye y'ibyemezo. Vite ikora ibice by'umukinnyi, Tailwind CSS 4 ikorana imyitwarire, esbuild ikora ibice by'umurikikiri w'umukinnyi.
Imikino ishingiye ku myitwarire: RTCPeerConnection mu browser ibera WebRTC hagati y'umukinnyi n'umukinnyi. Serivisi za ICE zashyizwe kuri buri sesoni kuri GET /api/signaling/ice-servers; Cloudflare Calls TURN (TURN_TOKEN_ID na TURN_API_TOKEN) cyangwa coturn yishyizwe mu kazi (TURN_URL na TURN_SECRET) zishobora guhindura, n'ikibazo cya STUN-only iyo ariko ntibyashyizwe.
Gukandika: canvas compositor yerekana ibice byombi, na MediaRecorder yohereza ibice buri myaka 5. Umukinnyi uhuza buri gice kuri POST /api/chunks/register (ikimenyetso gitera igihe gikora kuri imikino, umurongo n'umubare w'ibice), yohereza, yemeza kuri GET /verify na raporo kuri POST /receipt. Gukina ibyereka kuri GET /api/chunks/playlist/:id, na gahunda yo kumurika ikorwa VOD.
Kwinjiza: @ffmpeg/core 0.12.10 ikora mu umukinnyi w'umukinnyi w'umurikikiri kuri MP4, n'umurongo wa remux w'ibisobanuro kubanditshe bari MP4. Gukurikira no gukira umurongo byakozwe mu serivisi y'umukinnyi.
Mu gihe: SSE kuri GET /api/sse ibera ibyahinduwe, na signaling ikora polling; umurongo wo kugena ntibikora WebSocket.
Uburinganire: Vitest ikira ibice n'ibisabwa by'umukinnyi, na Playwright ikira ibice by'umukinnyi byose. Idosiye ya Markdown yerekana na marked, na PostCSS na Autoprefixer igira igishushanyo cya CSS.
Ibikoresho muri iyi repository
- Cloudflare Pages / Workers Gutunganya no gufungura serivisi
- Cloudflare D1 (SQLite) Idosiye y'ibyemezo bya platformu
- Hono 4 Imyanya y'HTTP, amapage n'API
- TypeScript 5 Inyandiko y'umurikikiri kuri serivisi n'umukinnyi
- Tailwind CSS 4 + PostCSS + Autoprefixer Gukorana imyitwarire n'igishushanyo cya CSS
- Vite 7 + esbuild Gutandukanya amasosiyete yo muri kajyendekerera no kwinjiza mu mugaragaro
- WebRTC (RTCPeerConnection) + TURN/STUN Audio na videwo mu kibanza hagati y'abakorerabushake
- Canvas compositor + MediaRecorder Imigabane 5 ya myaka yanditswe mu mugaragaro
- FFmpeg.wasm (@ffmpeg/core 0.12.10) Guhindura MP4 no kwinjira mu mugaragaro
- marked 17 Kurema Markdown kudocimenti yashyizwe hanze
- Vitest 5 Inyandiko z'ibyegeranyo na UI
- Playwright Inyandiko z'ibyegeranyo bya mbere-by-nyuma mu mugaragaro
- Wrangler 4 Imbaraga zo gukora no gufungura kuri Cloudflare
- SSE + HTTP polling Gushyira mu kazi ibyishimo by'imyaka hanze y'umurongo wa media
Urutonde rurimo ibintu package.json na iresitori zifite. Ni ihererekanya ry'ubumenyi, ntacyo cyemezo cy'ubufatanye cyangwa cyo gutanga inkunga.