From 02448437ad2e3ff47773af756d15721628200a41 Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Sun, 27 Sep 2026 10:49:40 -0400 Subject: [PATCH 1/3] feature: set up the playcast edge relay from streaming settings --- components/settings/PlaycastEdgeRelay.vue | 252 ++++++++++++++++++ i18n/locales/ar_SA.json | 19 ++ i18n/locales/da_DK.json | 19 ++ i18n/locales/de_DE.json | 19 ++ i18n/locales/en.json | 19 ++ i18n/locales/es_ES.json | 19 ++ i18n/locales/fr_FR.json | 19 ++ i18n/locales/it_IT.json | 19 ++ i18n/locales/ja_JP.json | 19 ++ i18n/locales/ko_KR.json | 19 ++ i18n/locales/pl_PL.json | 19 ++ i18n/locales/pt_BR.json | 19 ++ i18n/locales/ru_RU.json | 19 ++ i18n/locales/sv_SE.json | 19 ++ i18n/locales/tr_TR.json | 19 ++ i18n/locales/uk_UA.json | 19 ++ i18n/locales/zh_Hans.json | 19 ++ i18n/locales/zh_Hant.json | 19 ++ pages/settings/application/streaming.vue | 3 + .../settings/PlaycastEdgeRelay.spec.ts | 133 +++++++++ 20 files changed, 711 insertions(+) create mode 100644 components/settings/PlaycastEdgeRelay.vue create mode 100644 tests/components/settings/PlaycastEdgeRelay.spec.ts diff --git a/components/settings/PlaycastEdgeRelay.vue b/components/settings/PlaycastEdgeRelay.vue new file mode 100644 index 000000000..b696bb943 --- /dev/null +++ b/components/settings/PlaycastEdgeRelay.vue @@ -0,0 +1,252 @@ + + + diff --git a/i18n/locales/ar_SA.json b/i18n/locales/ar_SA.json index 73b77bcfb..63230f5b4 100644 --- a/i18n/locales/ar_SA.json +++ b/i18n/locales/ar_SA.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "فعّل Playcast بدلًا من استخدام منافذ TV مباشرة. ", "playcast_learn_more": "اعرف المزيد", + "relay_title": "مرحّل الحافة (Cloudflare)", + "relay_description": "قدّم البث لمشاهدي Playcast عبر Cloudflare بدلاً من هذا الخادم. تواصل خوادم اللعب إرسال بثها إلى هنا، لكن اللاعبين الذين يشاهدون عبر playcast والبث المباشر يقرؤونه عبر Cloudflare Worker يخزّن كل جزء مؤقتاً بالقرب منهم. يحتاج الـ worker إلى اسم مضيف على نطاق لديك في Cloudflare. تستخدم خوادم LAN هذا الخادم دائماً.", + "relay_builtin": "يخدم هذا الخادم المشاهدين", + "relay_worker": "يخدم {url} المشاهدين", + "relay_use_builtin": "الخدمة من هذا الخادم", + "relay_hostname": "اسم المضيف", + "relay_hostname_hint": "اسم مضيف جديد على نطاق في حساب Cloudflare هذا، مثل playcast.example.com. تنشئ Cloudflare سجل DNS والشهادة الخاصين به.", + "relay_account_id": "معرّف حساب Cloudflare", + "relay_account_id_hint": "يظهر في لوحة تحكم Cloudflare ضمن Workers & Pages أو في صفحة النظرة العامة لأي نطاق.", + "relay_api_token": "رمز API لـ Cloudflare", + "relay_api_token_hint": "يتطلب صلاحيتي الحساب › Workers Scripts › تعديل والمنطقة › المنطقة › قراءة. يُستخدم لهذا النشر فقط ولا يُحفظ أبداً.", + "relay_deploy": "النشر على Cloudflare", + "relay_deployed": "تم نشر مرحّل الحافة", + "relay_pending": "تم النشر على {url}. ما زالت Cloudflare تُصدر الشهادة؛ عندما يستجيب، اضغط استخدم هذا الـ worker.", + "relay_manual": "انشره بنفسك", + "relay_manual_command": "اضبط المسار في cloudflare-workers/playcast-relay/wrangler.toml على اسم المضيف الخاص بك، ثم من نسخة من مستودع api الخاص بـ 5stack شغّل:", + "relay_manual_paste": "ثم الصق عنوان الـ worker:", + "relay_use_worker": "استخدم هذا الـ worker", + "relay_updated": "تم تحديث مرحّل الحافة", "encoding_section": "الترميز", "live_video_codec": "ترميز البث المباشر", "live_video_codec_description": "H.264 هو الخيار الافتراضي لأوسع توافق مع المتصفحات والأجهزة، بما في ذلك مسار WebRTC الأقل تأخيرًا في كل المتصفحات. أما H.265 (HEVC) فيقلّل الحجم بنحو 30% عند الجودة نفسها، لكن HEVC عبر WebRTC مدعوم في Safari 17+ فقط — ومشاهدو Chrome وFirefox يرجعون إلى مسار HLS. ويرجع H.265 إلى H.264 تلقائيًا إذا كان GPU لا يدعم NVENC HEVC.", diff --git a/i18n/locales/da_DK.json b/i18n/locales/da_DK.json index c4bf6f75b..fefeed1c8 100644 --- a/i18n/locales/da_DK.json +++ b/i18n/locales/da_DK.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "Brug Playcast i stedet for TV-porte direkte. ", "playcast_learn_more": "Læs mere", + "relay_title": "Edge-relay (Cloudflare)", + "relay_description": "Server Playcast-seere fra Cloudflare i stedet for denne server. Spilservere sender stadig deres udsendelse hertil, men spillere, der ser med playcast, og livestreamen læser den gennem en Cloudflare Worker, der cacher hvert stykke tæt på dem. Workeren skal have et værtsnavn på et domæne, du har hos Cloudflare. LAN-servere bruger altid denne server.", + "relay_builtin": "Seere betjenes af denne server", + "relay_worker": "Seere betjenes af {url}", + "relay_use_builtin": "Betjen fra denne server", + "relay_hostname": "Værtsnavn", + "relay_hostname_hint": "Et nyt værtsnavn på et domæne i denne Cloudflare-konto, f.eks. playcast.example.com. Cloudflare opretter DNS-post og certifikat.", + "relay_account_id": "Cloudflare-konto-ID", + "relay_account_id_hint": "Vises i Cloudflare-dashboardet under Workers & Pages eller på et domænes oversigtsside.", + "relay_api_token": "Cloudflare API-token", + "relay_api_token_hint": "Kræver tilladelserne Konto › Workers Scripts › Rediger og Zone › Zone › Læs. Bruges kun til denne udrulning og gemmes aldrig.", + "relay_deploy": "Udrul til Cloudflare", + "relay_deployed": "Edge-relay udrullet", + "relay_pending": "Udrullet til {url}. Cloudflare udsteder stadig certifikatet; når den svarer, så tryk på Brug denne worker.", + "relay_manual": "Udrul den selv", + "relay_manual_command": "Sæt ruten i cloudflare-workers/playcast-relay/wrangler.toml til dit værtsnavn, og kør derefter fra en kopi af 5stack api-repositoriet:", + "relay_manual_paste": "Indsæt derefter workerens adresse:", + "relay_use_worker": "Brug denne worker", + "relay_updated": "Edge-relay opdateret", "encoding_section": "Encoding", "live_video_codec": "Codec til livestream", "live_video_codec_description": "H.264 er standard og giver bredest mulig understøttelse i browsere og på enheder, inklusive den WebRTC-sti med lavest latency i alle browsere. H.265 (HEVC) fylder ca. 30 % mindre ved samme kvalitet, men HEVC over WebRTC virker kun i Safari 17+ — seere i Chrome og Firefox falder tilbage til HLS. H.265 falder automatisk tilbage til H.264, hvis GPU'en mangler NVENC HEVC.", diff --git a/i18n/locales/de_DE.json b/i18n/locales/de_DE.json index fb198e70d..7d8d539ab 100644 --- a/i18n/locales/de_DE.json +++ b/i18n/locales/de_DE.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "Playcast statt direkter TV-Ports verwenden. ", "playcast_learn_more": "Mehr erfahren", + "relay_title": "Edge-Relay (Cloudflare)", + "relay_description": "Playcast-Zuschauer über Cloudflare statt über diesen Server bedienen. Gameserver senden ihre Übertragung weiterhin hierher, aber Spieler, die per playcast zuschauen, und der Livestream lesen sie über einen Cloudflare Worker, der jedes Stück in ihrer Nähe zwischenspeichert. Der Worker braucht einen Hostnamen auf einer Domain, die du bei Cloudflare hast. LAN-Server nutzen immer diesen Server.", + "relay_builtin": "Zuschauer werden von diesem Server bedient", + "relay_worker": "Zuschauer werden von {url} bedient", + "relay_use_builtin": "Über diesen Server bedienen", + "relay_hostname": "Hostname", + "relay_hostname_hint": "Ein neuer Hostname auf einer Domain in diesem Cloudflare-Konto, zum Beispiel playcast.example.com. Cloudflare legt DNS-Eintrag und Zertifikat an.", + "relay_account_id": "Cloudflare-Konto-ID", + "relay_account_id_hint": "Im Cloudflare-Dashboard unter Workers & Pages oder auf der Übersichtsseite einer Domain zu finden.", + "relay_api_token": "Cloudflare-API-Token", + "relay_api_token_hint": "Benötigt die Berechtigungen Konto › Workers Scripts › Bearbeiten und Zone › Zone › Lesen. Wird nur für diese Bereitstellung verwendet und nie gespeichert.", + "relay_deploy": "Auf Cloudflare bereitstellen", + "relay_deployed": "Edge-Relay bereitgestellt", + "relay_pending": "Auf {url} bereitgestellt. Cloudflare stellt das Zertifikat noch aus; sobald er antwortet, klicke auf Diesen Worker verwenden.", + "relay_manual": "Selbst bereitstellen", + "relay_manual_command": "Setze die Route in cloudflare-workers/playcast-relay/wrangler.toml auf deinen Hostnamen und führe dann in einem Checkout des 5stack-API-Repositorys aus:", + "relay_manual_paste": "Füge dann die Adresse des Workers ein:", + "relay_use_worker": "Diesen Worker verwenden", + "relay_updated": "Edge-Relay aktualisiert", "encoding_section": "Encoding", "live_video_codec": "Codec für Live-Streams", "live_video_codec_description": "H.264 ist der Standard für die breiteste Browser- und Geräte-Kompatibilität, inklusive des WebRTC-Pfads mit der geringsten Latenz in jedem Browser. H.265 (HEVC) ist bei gleicher Qualität rund 30 % kleiner, aber HEVC über WebRTC läuft nur ab Safari 17 — Zuschauer in Chrome und Firefox fallen auf den HLS-Pfad zurück. H.265 fällt automatisch auf H.264 zurück, wenn die GPU kein NVENC HEVC unterstützt.", diff --git a/i18n/locales/en.json b/i18n/locales/en.json index 5b52ddb2c..e13f47ee2 100644 --- a/i18n/locales/en.json +++ b/i18n/locales/en.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "Enable Playcast over using TV ports directly. ", "playcast_learn_more": "Learn more", + "relay_title": "Edge relay (Cloudflare)", + "relay_description": "Serve Playcast viewers from Cloudflare instead of this server. Game servers still send their broadcast here, but players watching with playcast and the live stream read it through a Cloudflare Worker that caches each piece close to them. The worker needs a hostname on a domain you have on Cloudflare. LAN servers always use this server.", + "relay_builtin": "Viewers are served by this server", + "relay_worker": "Viewers are served by {url}", + "relay_use_builtin": "Serve from this server", + "relay_hostname": "Hostname", + "relay_hostname_hint": "A new hostname on a domain in this Cloudflare account, such as playcast.example.com. Cloudflare creates its DNS record and certificate.", + "relay_account_id": "Cloudflare account ID", + "relay_account_id_hint": "Shown in the Cloudflare dashboard under Workers & Pages, or on any domain's overview page.", + "relay_api_token": "Cloudflare API token", + "relay_api_token_hint": "Needs the Account › Workers Scripts › Edit and Zone › Zone › Read permissions. Only used for this deploy, never saved.", + "relay_deploy": "Deploy to Cloudflare", + "relay_deployed": "Edge relay deployed", + "relay_pending": "Deployed to {url}. Cloudflare is still issuing its certificate; once it answers, press Use this worker.", + "relay_manual": "Deploy it yourself", + "relay_manual_command": "Set the route in cloudflare-workers/playcast-relay/wrangler.toml to your hostname, then from a checkout of the 5stack api repository run:", + "relay_manual_paste": "Then paste the worker's address:", + "relay_use_worker": "Use this worker", + "relay_updated": "Edge relay updated", "encoding_section": "Encoding", "live_video_codec": "Live Stream Codec", "live_video_codec_description": "H.264 is the default for the broadest browser and device compatibility, including the lowest-latency WebRTC path on every browser. H.265 (HEVC) is ~30% smaller at matched quality, but HEVC-over-WebRTC is Safari 17+ only — Chrome and Firefox viewers fall back to the HLS path. H.265 falls back to H.264 automatically if the GPU lacks NVENC HEVC.", diff --git a/i18n/locales/es_ES.json b/i18n/locales/es_ES.json index 1996c16b0..2546566be 100644 --- a/i18n/locales/es_ES.json +++ b/i18n/locales/es_ES.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "Usa Playcast en lugar de los puertos de TV directamente. ", "playcast_learn_more": "Más información", + "relay_title": "Relé en el borde (Cloudflare)", + "relay_description": "Sirve a los espectadores de Playcast desde Cloudflare en lugar de este servidor. Los servidores de juego siguen enviando su emisión aquí, pero los jugadores que miran con playcast y el directo la leen a través de un Cloudflare Worker que guarda en caché cada fragmento cerca de ellos. El worker necesita un nombre de host en un dominio que tengas en Cloudflare. Los servidores LAN siempre usan este servidor.", + "relay_builtin": "Los espectadores se sirven desde este servidor", + "relay_worker": "Los espectadores se sirven desde {url}", + "relay_use_builtin": "Servir desde este servidor", + "relay_hostname": "Nombre de host", + "relay_hostname_hint": "Un nombre de host nuevo en un dominio de esta cuenta de Cloudflare, como playcast.example.com. Cloudflare crea su registro DNS y su certificado.", + "relay_account_id": "ID de cuenta de Cloudflare", + "relay_account_id_hint": "Aparece en el panel de Cloudflare en Workers & Pages o en la página de resumen de cualquier dominio.", + "relay_api_token": "Token de API de Cloudflare", + "relay_api_token_hint": "Necesita los permisos Cuenta › Workers Scripts › Editar y Zona › Zona › Leer. Solo se usa para este despliegue y nunca se guarda.", + "relay_deploy": "Desplegar en Cloudflare", + "relay_deployed": "Relé en el borde desplegado", + "relay_pending": "Desplegado en {url}. Cloudflare aún está emitiendo su certificado; cuando responda, pulsa Usar este worker.", + "relay_manual": "Despliégalo tú mismo", + "relay_manual_command": "Pon tu nombre de host en la ruta de cloudflare-workers/playcast-relay/wrangler.toml y después, desde una copia del repositorio api de 5stack, ejecuta:", + "relay_manual_paste": "Después pega la dirección del worker:", + "relay_use_worker": "Usar este worker", + "relay_updated": "Relé en el borde actualizado", "encoding_section": "Codificación", "live_video_codec": "Códec de la retransmisión en directo", "live_video_codec_description": "H.264 es el valor por defecto por su máxima compatibilidad con navegadores y dispositivos, incluida la ruta WebRTC de menor latencia en todos los navegadores. H.265 (HEVC) ocupa ~30% menos con la misma calidad, pero HEVC sobre WebRTC solo funciona en Safari 17+: los espectadores de Chrome y Firefox pasan a la ruta HLS. H.265 recurre automáticamente a H.264 si la GPU no admite NVENC HEVC.", diff --git a/i18n/locales/fr_FR.json b/i18n/locales/fr_FR.json index 5908b8974..849ee3d03 100644 --- a/i18n/locales/fr_FR.json +++ b/i18n/locales/fr_FR.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "Utiliser Playcast plutôt que les ports TV directement. ", "playcast_learn_more": "En savoir plus", + "relay_title": "Relais en périphérie (Cloudflare)", + "relay_description": "Servez les spectateurs Playcast depuis Cloudflare plutôt que depuis ce serveur. Les serveurs de jeu envoient toujours leur diffusion ici, mais les joueurs qui regardent avec playcast et le stream en direct la lisent via un Cloudflare Worker qui met chaque fragment en cache près d'eux. Le worker a besoin d'un nom d'hôte sur un domaine que vous avez sur Cloudflare. Les serveurs LAN utilisent toujours ce serveur.", + "relay_builtin": "Les spectateurs sont servis par ce serveur", + "relay_worker": "Les spectateurs sont servis par {url}", + "relay_use_builtin": "Servir depuis ce serveur", + "relay_hostname": "Nom d'hôte", + "relay_hostname_hint": "Un nouveau nom d'hôte sur un domaine de ce compte Cloudflare, par exemple playcast.example.com. Cloudflare crée son enregistrement DNS et son certificat.", + "relay_account_id": "ID de compte Cloudflare", + "relay_account_id_hint": "Visible dans le tableau de bord Cloudflare sous Workers & Pages, ou sur la page d'aperçu de n'importe quel domaine.", + "relay_api_token": "Jeton d'API Cloudflare", + "relay_api_token_hint": "Nécessite les autorisations Compte › Workers Scripts › Modifier et Zone › Zone › Lire. Utilisé uniquement pour ce déploiement, jamais enregistré.", + "relay_deploy": "Déployer sur Cloudflare", + "relay_deployed": "Relais en périphérie déployé", + "relay_pending": "Déployé sur {url}. Cloudflare émet encore son certificat ; dès qu'il répond, cliquez sur Utiliser ce worker.", + "relay_manual": "Le déployer soi-même", + "relay_manual_command": "Mettez votre nom d'hôte dans la route de cloudflare-workers/playcast-relay/wrangler.toml, puis depuis une copie du dépôt api de 5stack, exécutez :", + "relay_manual_paste": "Collez ensuite l'adresse du worker :", + "relay_use_worker": "Utiliser ce worker", + "relay_updated": "Relais en périphérie mis à jour", "encoding_section": "Encodage", "live_video_codec": "Codec du stream live", "live_video_codec_description": "H.264 est le choix par défaut pour la compatibilité navigateurs et appareils la plus large, y compris le chemin WebRTC à plus faible latence sur tous les navigateurs. H.265 (HEVC) est environ 30 % plus léger à qualité équivalente, mais HEVC via WebRTC n'est disponible que sur Safari 17+ — les spectateurs Chrome et Firefox basculent sur le chemin HLS. H.265 retombe automatiquement sur H.264 si le GPU n'a pas NVENC HEVC.", diff --git a/i18n/locales/it_IT.json b/i18n/locales/it_IT.json index 85dd949e1..8aaa48709 100644 --- a/i18n/locales/it_IT.json +++ b/i18n/locales/it_IT.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "Usa Playcast al posto delle porte TV dirette. ", "playcast_learn_more": "Scopri di più", + "relay_title": "Relay edge (Cloudflare)", + "relay_description": "Servi gli spettatori Playcast da Cloudflare invece che da questo server. I server di gioco continuano a inviare qui la loro trasmissione, ma i giocatori che guardano con playcast e la diretta la leggono tramite un Cloudflare Worker che mette in cache ogni frammento vicino a loro. Il worker ha bisogno di un nome host su un dominio che hai su Cloudflare. I server LAN usano sempre questo server.", + "relay_builtin": "Gli spettatori sono serviti da questo server", + "relay_worker": "Gli spettatori sono serviti da {url}", + "relay_use_builtin": "Servi da questo server", + "relay_hostname": "Nome host", + "relay_hostname_hint": "Un nuovo nome host su un dominio di questo account Cloudflare, come playcast.example.com. Cloudflare crea il record DNS e il certificato.", + "relay_account_id": "ID account Cloudflare", + "relay_account_id_hint": "Si trova nella dashboard di Cloudflare in Workers & Pages o nella pagina di panoramica di qualsiasi dominio.", + "relay_api_token": "Token API Cloudflare", + "relay_api_token_hint": "Richiede i permessi Account › Workers Scripts › Modifica e Zona › Zona › Lettura. Usato solo per questo deploy, mai salvato.", + "relay_deploy": "Distribuisci su Cloudflare", + "relay_deployed": "Relay edge distribuito", + "relay_pending": "Distribuito su {url}. Cloudflare sta ancora emettendo il certificato; quando risponde, premi Usa questo worker.", + "relay_manual": "Distribuiscilo tu", + "relay_manual_command": "Imposta la route in cloudflare-workers/playcast-relay/wrangler.toml sul tuo nome host, poi da una copia del repository api di 5stack esegui:", + "relay_manual_paste": "Poi incolla l'indirizzo del worker:", + "relay_use_worker": "Usa questo worker", + "relay_updated": "Relay edge aggiornato", "encoding_section": "Codifica", "live_video_codec": "Codec della diretta", "live_video_codec_description": "H.264 è il predefinito per la massima compatibilità con browser e dispositivi, incluso il percorso WebRTC a latenza più bassa su ogni browser. H.265 (HEVC) pesa circa il 30% in meno a parità di qualità, ma HEVC su WebRTC funziona solo su Safari 17+: gli spettatori su Chrome e Firefox ricadono sul percorso HLS. H.265 ricade automaticamente su H.264 se la GPU non supporta NVENC HEVC.", diff --git a/i18n/locales/ja_JP.json b/i18n/locales/ja_JP.json index 2112c56ba..d43b622ba 100644 --- a/i18n/locales/ja_JP.json +++ b/i18n/locales/ja_JP.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "TV ポートへの直接接続の代わりに Playcast を使用します。", "playcast_learn_more": "詳細", + "relay_title": "エッジリレー (Cloudflare)", + "relay_description": "Playcast の視聴者をこのサーバーではなく Cloudflare から配信します。ゲームサーバーは引き続きここへ配信を送りますが、playcast で観戦するプレイヤーとライブ配信は、各データを視聴者の近くにキャッシュする Cloudflare Worker を経由して受け取ります。Worker には Cloudflare で管理しているドメイン上のホスト名が必要です。LAN サーバーは常にこのサーバーを使います。", + "relay_builtin": "視聴者はこのサーバーから配信されています", + "relay_worker": "視聴者は {url} から配信されています", + "relay_use_builtin": "このサーバーから配信する", + "relay_hostname": "ホスト名", + "relay_hostname_hint": "この Cloudflare アカウント内のドメインにある新しいホスト名 (例: playcast.example.com)。DNS レコードと証明書は Cloudflare が作成します。", + "relay_account_id": "Cloudflare アカウント ID", + "relay_account_id_hint": "Cloudflare ダッシュボードの Workers & Pages、または任意のドメインの概要ページに表示されます。", + "relay_api_token": "Cloudflare API トークン", + "relay_api_token_hint": "アカウント › Workers Scripts › 編集 と ゾーン › ゾーン › 読み取り の権限が必要です。このデプロイにのみ使用し、保存はしません。", + "relay_deploy": "Cloudflare にデプロイ", + "relay_deployed": "エッジリレーをデプロイしました", + "relay_pending": "{url} にデプロイしました。Cloudflare が証明書を発行中です。応答するようになったら「この Worker を使う」を押してください。", + "relay_manual": "自分でデプロイする", + "relay_manual_command": "cloudflare-workers/playcast-relay/wrangler.toml のルートをあなたのホスト名に設定し、5stack api リポジトリのチェックアウトで次を実行:", + "relay_manual_paste": "Worker のアドレスを貼り付けます:", + "relay_use_worker": "この Worker を使う", + "relay_updated": "エッジリレーを更新しました", "encoding_section": "エンコード", "live_video_codec": "ライブ配信のコーデック", "live_video_codec_description": "H.264 が既定で、ブラウザやデバイスの互換性が最も広く、すべてのブラウザで最も低遅延な WebRTC 経路を使えます。H.265 (HEVC) は同等画質で約 30% 小さくなりますが、WebRTC 上の HEVC は Safari 17 以降のみ対応で、Chrome と Firefox の視聴者は HLS 経路にフォールバックします。GPU が NVENC HEVC に非対応の場合、H.265 は自動的に H.264 にフォールバックします。", diff --git a/i18n/locales/ko_KR.json b/i18n/locales/ko_KR.json index 1ad08555f..b9f4a78b8 100644 --- a/i18n/locales/ko_KR.json +++ b/i18n/locales/ko_KR.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "TV 포트를 직접 사용하는 대신 Playcast를 활성화합니다. ", "playcast_learn_more": "자세히 알아보기", + "relay_title": "엣지 릴레이 (Cloudflare)", + "relay_description": "Playcast 시청자를 이 서버 대신 Cloudflare에서 제공합니다. 게임 서버는 계속 이곳으로 방송을 보내지만, playcast로 관전하는 플레이어와 라이브 스트림은 각 조각을 시청자 가까이에 캐시하는 Cloudflare Worker를 통해 읽습니다. Worker에는 Cloudflare에 있는 도메인의 호스트 이름이 필요합니다. LAN 서버는 항상 이 서버를 사용합니다.", + "relay_builtin": "이 서버가 시청자에게 제공 중", + "relay_worker": "{url}에서 시청자에게 제공 중", + "relay_use_builtin": "이 서버에서 제공", + "relay_hostname": "호스트 이름", + "relay_hostname_hint": "이 Cloudflare 계정의 도메인에 있는 새 호스트 이름(예: playcast.example.com). DNS 레코드와 인증서는 Cloudflare가 만듭니다.", + "relay_account_id": "Cloudflare 계정 ID", + "relay_account_id_hint": "Cloudflare 대시보드의 Workers & Pages 또는 도메인 개요 페이지에서 확인할 수 있습니다.", + "relay_api_token": "Cloudflare API 토큰", + "relay_api_token_hint": "계정 › Workers Scripts › 편집 및 영역 › 영역 › 읽기 권한이 필요합니다. 이번 배포에만 사용되며 저장되지 않습니다.", + "relay_deploy": "Cloudflare에 배포", + "relay_deployed": "엣지 릴레이를 배포했습니다", + "relay_pending": "{url}에 배포했습니다. Cloudflare가 아직 인증서를 발급 중입니다. 응답하면 이 Worker 사용을 누르세요.", + "relay_manual": "직접 배포", + "relay_manual_command": "cloudflare-workers/playcast-relay/wrangler.toml의 라우트를 호스트 이름으로 설정한 뒤, 5stack api 저장소 체크아웃에서 실행:", + "relay_manual_paste": "그런 다음 Worker 주소를 붙여넣으세요:", + "relay_use_worker": "이 Worker 사용", + "relay_updated": "엣지 릴레이를 업데이트했습니다", "encoding_section": "인코딩", "live_video_codec": "실시간 스트림 코덱", "live_video_codec_description": "H.264는 모든 브라우저에서 가장 낮은 지연의 WebRTC 경로를 포함해 가장 폭넓은 브라우저·기기 호환성을 위한 기본값입니다. H.265(HEVC)는 동일 품질에서 약 30% 더 작지만, HEVC over WebRTC는 Safari 17 이상에서만 지원되며 Chrome과 Firefox 시청자는 HLS 경로로 대체됩니다. GPU에 NVENC HEVC가 없으면 H.265는 자동으로 H.264로 대체됩니다.", diff --git a/i18n/locales/pl_PL.json b/i18n/locales/pl_PL.json index e2ece131b..c2e9b120e 100644 --- a/i18n/locales/pl_PL.json +++ b/i18n/locales/pl_PL.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "Włącz Playcast zamiast bezpośredniego korzystania z portów TV", "playcast_learn_more": "Dowiedz się więcej", + "relay_title": "Przekaźnik brzegowy (Cloudflare)", + "relay_description": "Obsługuj widzów Playcast z Cloudflare zamiast z tego serwera. Serwery gry nadal wysyłają transmisję tutaj, ale gracze oglądający przez playcast i transmisja na żywo odczytują ją przez Cloudflare Worker, który przechowuje każdy fragment w pamięci podręcznej blisko nich. Worker potrzebuje nazwy hosta w domenie, którą masz w Cloudflare. Serwery LAN zawsze korzystają z tego serwera.", + "relay_builtin": "Widzowie są obsługiwani przez ten serwer", + "relay_worker": "Widzowie są obsługiwani przez {url}", + "relay_use_builtin": "Obsługuj z tego serwera", + "relay_hostname": "Nazwa hosta", + "relay_hostname_hint": "Nowa nazwa hosta w domenie na tym koncie Cloudflare, np. playcast.example.com. Cloudflare utworzy rekord DNS i certyfikat.", + "relay_account_id": "ID konta Cloudflare", + "relay_account_id_hint": "Widoczne w panelu Cloudflare w sekcji Workers & Pages lub na stronie przeglądu dowolnej domeny.", + "relay_api_token": "Token API Cloudflare", + "relay_api_token_hint": "Wymaga uprawnień Konto › Workers Scripts › Edycja oraz Strefa › Strefa › Odczyt. Używany tylko do tego wdrożenia i nigdy nie jest zapisywany.", + "relay_deploy": "Wdróż w Cloudflare", + "relay_deployed": "Przekaźnik brzegowy wdrożony", + "relay_pending": "Wdrożono pod {url}. Cloudflare wciąż wystawia certyfikat; gdy zacznie odpowiadać, kliknij Użyj tego workera.", + "relay_manual": "Wdróż samodzielnie", + "relay_manual_command": "Ustaw trasę w cloudflare-workers/playcast-relay/wrangler.toml na swoją nazwę hosta, a następnie w kopii repozytorium api 5stack uruchom:", + "relay_manual_paste": "Następnie wklej adres workera:", + "relay_use_worker": "Użyj tego workera", + "relay_updated": "Przekaźnik brzegowy zaktualizowany", "encoding_section": "Kodowanie", "live_video_codec": "Kodek transmisji na żywo", "live_video_codec_description": "H.264 jest domyślny dla najszerszej kompatybilności z przeglądarkami i urządzeniami, w tym dla ścieżki WebRTC o najniższym opóźnieniu w każdej przeglądarce. H.265 (HEVC) jest ~30% mniejszy przy tej samej jakości, ale HEVC przez WebRTC działa tylko w Safari 17+ — przeglądarki Chrome i Firefox przełączają się na ścieżkę HLS. H.265 automatycznie przełącza się na H.264, jeśli GPU nie obsługuje NVENC HEVC.", diff --git a/i18n/locales/pt_BR.json b/i18n/locales/pt_BR.json index bc332643c..b4e3f9113 100644 --- a/i18n/locales/pt_BR.json +++ b/i18n/locales/pt_BR.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "Habilitar Playcast usando portas da GOTV diretamente. ", "playcast_learn_more": "Leia mais", + "relay_title": "Relay na borda (Cloudflare)", + "relay_description": "Atenda os espectadores do Playcast pela Cloudflare em vez deste servidor. Os servidores de jogo continuam enviando a transmissão para cá, mas os jogadores que assistem com playcast e a transmissão ao vivo a leem por um Cloudflare Worker que guarda cada fragmento em cache perto deles. O worker precisa de um hostname em um domínio que você tenha na Cloudflare. Servidores LAN sempre usam este servidor.", + "relay_builtin": "Os espectadores são atendidos por este servidor", + "relay_worker": "Os espectadores são atendidos por {url}", + "relay_use_builtin": "Atender por este servidor", + "relay_hostname": "Hostname", + "relay_hostname_hint": "Um novo hostname em um domínio desta conta da Cloudflare, como playcast.example.com. A Cloudflare cria o registro DNS e o certificado.", + "relay_account_id": "ID da conta Cloudflare", + "relay_account_id_hint": "Aparece no painel da Cloudflare em Workers & Pages ou na página de visão geral de qualquer domínio.", + "relay_api_token": "Token de API da Cloudflare", + "relay_api_token_hint": "Precisa das permissões Conta › Workers Scripts › Editar e Zona › Zona › Ler. Usado apenas nesta implantação, nunca é salvo.", + "relay_deploy": "Implantar na Cloudflare", + "relay_deployed": "Relay na borda implantado", + "relay_pending": "Implantado em {url}. A Cloudflare ainda está emitindo o certificado; quando responder, clique em Usar este worker.", + "relay_manual": "Implantar você mesmo", + "relay_manual_command": "Defina a rota em cloudflare-workers/playcast-relay/wrangler.toml com o seu hostname e, em uma cópia do repositório api do 5stack, execute:", + "relay_manual_paste": "Depois cole o endereço do worker:", + "relay_use_worker": "Usar este worker", + "relay_updated": "Relay na borda atualizado", "encoding_section": "Encodando", "live_video_codec": "Live Stream Codec", "live_video_codec_description": "H.264 é o padrão para a maior compatibilidade entre navegadores e dispositivos, incluindo o caminho WebRTC de menor latência em todos os navegadores. H.265 (HEVC) é ~30% menor na mesma qualidade, mas HEVC-over-WebRTC funciona apenas no Safari 17+ — espectadores no Chrome e Firefox usam fallback para o caminho HLS. H.265 faz fallback automático para H.264 se a GPU não tiver NVENC HEVC.", diff --git a/i18n/locales/ru_RU.json b/i18n/locales/ru_RU.json index 7d292e345..eaa19776e 100644 --- a/i18n/locales/ru_RU.json +++ b/i18n/locales/ru_RU.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "Использовать Playcast вместо прямого подключения через TV-порты. ", "playcast_learn_more": "Узнать больше", + "relay_title": "Пограничный ретранслятор (Cloudflare)", + "relay_description": "Обслуживайте зрителей Playcast через Cloudflare вместо этого сервера. Игровые серверы по-прежнему отправляют трансляцию сюда, но игроки, смотрящие через playcast, и прямая трансляция читают её через Cloudflare Worker, который кэширует каждый фрагмент рядом с ними. Worker нужен хост на домене, который у вас есть в Cloudflare. LAN-серверы всегда используют этот сервер.", + "relay_builtin": "Зрителей обслуживает этот сервер", + "relay_worker": "Зрителей обслуживает {url}", + "relay_use_builtin": "Обслуживать с этого сервера", + "relay_hostname": "Хост", + "relay_hostname_hint": "Новый хост на домене этого аккаунта Cloudflare, например playcast.example.com. Cloudflare создаст DNS-запись и сертификат.", + "relay_account_id": "ID аккаунта Cloudflare", + "relay_account_id_hint": "Указан в панели Cloudflare в разделе Workers & Pages или на странице обзора любого домена.", + "relay_api_token": "API-токен Cloudflare", + "relay_api_token_hint": "Нужны разрешения Аккаунт › Workers Scripts › Изменение и Зона › Зона › Чтение. Используется только для этого развёртывания и никогда не сохраняется.", + "relay_deploy": "Развернуть в Cloudflare", + "relay_deployed": "Пограничный ретранслятор развёрнут", + "relay_pending": "Развёрнуто на {url}. Cloudflare ещё выпускает сертификат; когда он ответит, нажмите Использовать этот worker.", + "relay_manual": "Развернуть самостоятельно", + "relay_manual_command": "Укажите свой хост в маршруте в cloudflare-workers/playcast-relay/wrangler.toml, затем в копии репозитория api 5stack выполните:", + "relay_manual_paste": "Затем вставьте адрес worker:", + "relay_use_worker": "Использовать этот worker", + "relay_updated": "Пограничный ретранслятор обновлён", "encoding_section": "Кодирование", "live_video_codec": "Кодек прямой трансляции", "live_video_codec_description": "H.264 — вариант по умолчанию для максимальной совместимости с браузерами и устройствами, включая путь WebRTC с наименьшей задержкой в любом браузере. H.265 (HEVC) примерно на 30% компактнее при том же качестве, но HEVC через WebRTC поддерживается только в Safari 17+ — Chrome и Firefox переключаются на путь HLS. H.265 автоматически переключается на H.264, если у GPU нет NVENC HEVC.", diff --git a/i18n/locales/sv_SE.json b/i18n/locales/sv_SE.json index d3724b047..82a189c03 100644 --- a/i18n/locales/sv_SE.json +++ b/i18n/locales/sv_SE.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "Aktivera Playcast istället för att använda TV-portar direkt. ", "playcast_learn_more": "Läs mer", + "relay_title": "Edge-relä (Cloudflare)", + "relay_description": "Servera Playcast-tittare från Cloudflare i stället för den här servern. Spelservrar skickar fortfarande sin sändning hit, men spelare som tittar med playcast och livesändningen läser den genom en Cloudflare Worker som cachar varje del nära dem. Workern behöver ett värdnamn på en domän som du har hos Cloudflare. LAN-servrar använder alltid den här servern.", + "relay_builtin": "Tittare betjänas av den här servern", + "relay_worker": "Tittare betjänas av {url}", + "relay_use_builtin": "Servera från den här servern", + "relay_hostname": "Värdnamn", + "relay_hostname_hint": "Ett nytt värdnamn på en domän i det här Cloudflare-kontot, till exempel playcast.example.com. Cloudflare skapar DNS-post och certifikat.", + "relay_account_id": "Cloudflare-konto-ID", + "relay_account_id_hint": "Visas i Cloudflare-instrumentpanelen under Workers & Pages eller på översiktssidan för en domän.", + "relay_api_token": "Cloudflare API-token", + "relay_api_token_hint": "Kräver behörigheterna Konto › Workers Scripts › Redigera och Zon › Zon › Läsa. Används bara för den här driftsättningen och sparas aldrig.", + "relay_deploy": "Driftsätt på Cloudflare", + "relay_deployed": "Edge-relä driftsatt", + "relay_pending": "Driftsatt på {url}. Cloudflare utfärdar fortfarande certifikatet; när den svarar, tryck på Använd den här workern.", + "relay_manual": "Driftsätt själv", + "relay_manual_command": "Ställ in routen i cloudflare-workers/playcast-relay/wrangler.toml på ditt värdnamn och kör sedan från en utcheckning av 5stack api-repot:", + "relay_manual_paste": "Klistra sedan in workerns adress:", + "relay_use_worker": "Använd den här workern", + "relay_updated": "Edge-relä uppdaterat", "encoding_section": "Kodning", "live_video_codec": "Codec för livesändning", "live_video_codec_description": "H.264 är standard för bredast kompatibilitet med webbläsare och enheter, inklusive den snabbaste WebRTC-vägen i alla webbläsare. H.265 (HEVC) är cirka 30 % mindre vid samma kvalitet, men HEVC över WebRTC funkar bara i Safari 17+ — Chrome- och Firefox-tittare faller tillbaka till HLS-vägen. H.265 faller automatiskt tillbaka till H.264 om GPU:n saknar NVENC HEVC.", diff --git a/i18n/locales/tr_TR.json b/i18n/locales/tr_TR.json index c801381c2..ca422fe40 100644 --- a/i18n/locales/tr_TR.json +++ b/i18n/locales/tr_TR.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "TV portlarını doğrudan kullanmak yerine Playcast'i etkinleştir. ", "playcast_learn_more": "Daha fazla bilgi", + "relay_title": "Uç aktarıcı (Cloudflare)", + "relay_description": "Playcast izleyicilerine bu sunucu yerine Cloudflare üzerinden hizmet verin. Oyun sunucuları yayınlarını yine buraya gönderir, ancak playcast ile izleyen oyuncular ve canlı yayın bunu her parçayı onlara yakın önbelleğe alan bir Cloudflare Worker üzerinden okur. Worker'ın Cloudflare'de bulunan bir alan adında bir ana makine adına ihtiyacı vardır. LAN sunucuları her zaman bu sunucuyu kullanır.", + "relay_builtin": "İzleyicilere bu sunucu hizmet veriyor", + "relay_worker": "İzleyicilere {url} hizmet veriyor", + "relay_use_builtin": "Bu sunucudan hizmet ver", + "relay_hostname": "Ana makine adı", + "relay_hostname_hint": "Bu Cloudflare hesabındaki bir alan adında yeni bir ana makine adı, örneğin playcast.example.com. Cloudflare DNS kaydını ve sertifikayı oluşturur.", + "relay_account_id": "Cloudflare hesap kimliği", + "relay_account_id_hint": "Cloudflare panelinde Workers & Pages altında veya herhangi bir alan adının genel bakış sayfasında gösterilir.", + "relay_api_token": "Cloudflare API anahtarı", + "relay_api_token_hint": "Hesap › Workers Scripts › Düzenle ve Bölge › Bölge › Okuma izinleri gerekir. Yalnızca bu dağıtım için kullanılır, asla kaydedilmez.", + "relay_deploy": "Cloudflare'e dağıt", + "relay_deployed": "Uç aktarıcı dağıtıldı", + "relay_pending": "{url} adresine dağıtıldı. Cloudflare sertifikayı hâlâ oluşturuyor; yanıt verdiğinde Bu worker'ı kullan'a bas.", + "relay_manual": "Kendin dağıt", + "relay_manual_command": "cloudflare-workers/playcast-relay/wrangler.toml içindeki rotayı ana makine adına ayarla, ardından 5stack api deposunun bir kopyasında şunu çalıştır:", + "relay_manual_paste": "Ardından worker'ın adresini yapıştır:", + "relay_use_worker": "Bu worker'ı kullan", + "relay_updated": "Uç aktarıcı güncellendi", "encoding_section": "Kodlama", "live_video_codec": "Canlı yayın kodeği", "live_video_codec_description": "H.264, her tarayıcıda en düşük gecikmeli WebRTC yolu da dahil olmak üzere en geniş tarayıcı ve cihaz uyumluluğu için varsayılandır. H.265 (HEVC) aynı kalitede yaklaşık %30 daha küçüktür, ancak HEVC-over-WebRTC yalnızca Safari 17+ ile çalışır — Chrome ve Firefox izleyicileri HLS yoluna döner. GPU'da NVENC HEVC yoksa H.265 otomatik olarak H.264'e döner.", diff --git a/i18n/locales/uk_UA.json b/i18n/locales/uk_UA.json index e99ff545d..8b906b6f1 100644 --- a/i18n/locales/uk_UA.json +++ b/i18n/locales/uk_UA.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "Увімкнути Playcast замість прямого використання портів TV. ", "playcast_learn_more": "Дізнатися більше", + "relay_title": "Прикордонний ретранслятор (Cloudflare)", + "relay_description": "Обслуговуйте глядачів Playcast через Cloudflare замість цього сервера. Ігрові сервери й надалі надсилають трансляцію сюди, але гравці, які дивляться через playcast, і пряма трансляція читають її через Cloudflare Worker, що кешує кожен фрагмент поруч із ними. Worker потрібне ім’я хоста на домені, який у вас є в Cloudflare. LAN-сервери завжди використовують цей сервер.", + "relay_builtin": "Глядачів обслуговує цей сервер", + "relay_worker": "Глядачів обслуговує {url}", + "relay_use_builtin": "Обслуговувати з цього сервера", + "relay_hostname": "Ім’я хоста", + "relay_hostname_hint": "Нове ім’я хоста на домені цього облікового запису Cloudflare, наприклад playcast.example.com. Cloudflare створить DNS-запис і сертифікат.", + "relay_account_id": "ID облікового запису Cloudflare", + "relay_account_id_hint": "Вказано на панелі Cloudflare у розділі Workers & Pages або на сторінці огляду будь-якого домену.", + "relay_api_token": "API-токен Cloudflare", + "relay_api_token_hint": "Потрібні дозволи Обліковий запис › Workers Scripts › Редагування та Зона › Зона › Читання. Використовується лише для цього розгортання й ніколи не зберігається.", + "relay_deploy": "Розгорнути в Cloudflare", + "relay_deployed": "Прикордонний ретранслятор розгорнуто", + "relay_pending": "Розгорнуто на {url}. Cloudflare ще випускає сертифікат; щойно він відповість, натисніть Використати цей worker.", + "relay_manual": "Розгорнути самостійно", + "relay_manual_command": "Вкажіть своє ім’я хоста в маршруті в cloudflare-workers/playcast-relay/wrangler.toml, потім у копії репозиторію api 5stack виконайте:", + "relay_manual_paste": "Потім вставте адресу worker:", + "relay_use_worker": "Використати цей worker", + "relay_updated": "Прикордонний ретранслятор оновлено", "encoding_section": "Кодування", "live_video_codec": "Кодек прямої трансляції", "live_video_codec_description": "H.264 — типовий вибір для найширшої сумісності з браузерами й пристроями, включно з найнижчою затримкою WebRTC в усіх браузерах. H.265 (HEVC) приблизно на 30% менший при однаковій якості, але HEVC через WebRTC підтримується лише в Safari 17+ — Chrome і Firefox переходять на шлях HLS. H.265 автоматично переходить на H.264, якщо GPU не має NVENC HEVC.", diff --git a/i18n/locales/zh_Hans.json b/i18n/locales/zh_Hans.json index 0659a927c..4f7e9da13 100644 --- a/i18n/locales/zh_Hans.json +++ b/i18n/locales/zh_Hans.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "启用 Playcast 而非直接使用 TV 端口。", "playcast_learn_more": "了解更多", + "relay_title": "边缘中继 (Cloudflare)", + "relay_description": "通过 Cloudflare 而不是本服务器为 Playcast 观众提供服务。游戏服务器仍将广播发送到这里,但使用 playcast 观战的玩家和直播会通过 Cloudflare Worker 读取,它会在观众附近缓存每个片段。Worker 需要一个位于你在 Cloudflare 上的域名下的主机名。局域网服务器始终使用本服务器。", + "relay_builtin": "观众由本服务器提供服务", + "relay_worker": "观众由 {url} 提供服务", + "relay_use_builtin": "改由本服务器提供", + "relay_hostname": "主机名", + "relay_hostname_hint": "此 Cloudflare 账户中某个域名下的新主机名,例如 playcast.example.com。Cloudflare 会创建它的 DNS 记录和证书。", + "relay_account_id": "Cloudflare 账户 ID", + "relay_account_id_hint": "在 Cloudflare 控制台的 Workers & Pages 下,或任一域名的概览页面中可以找到。", + "relay_api_token": "Cloudflare API 令牌", + "relay_api_token_hint": "需要 账户 › Workers Scripts › 编辑 以及 区域 › 区域 › 读取 权限。仅用于本次部署,不会保存。", + "relay_deploy": "部署到 Cloudflare", + "relay_deployed": "边缘中继已部署", + "relay_pending": "已部署到 {url}。Cloudflare 仍在签发证书;它开始响应后,请点击“使用此 Worker”。", + "relay_manual": "自行部署", + "relay_manual_command": "将 cloudflare-workers/playcast-relay/wrangler.toml 中的路由设为你的主机名,然后在 5stack api 仓库的检出目录中运行:", + "relay_manual_paste": "然后粘贴 Worker 的地址:", + "relay_use_worker": "使用此 Worker", + "relay_updated": "边缘中继已更新", "encoding_section": "编码", "live_video_codec": "直播视频编码", "live_video_codec_description": "H.264 是默认选项,可在最广泛的浏览器和设备上兼容,包括在每款浏览器上延迟最低的 WebRTC 路径。H.265 (HEVC) 在同等质量下体积小约 30%,但 HEVC-over-WebRTC 仅支持 Safari 17+——Chrome 和 Firefox 观众将回退到 HLS 路径。如果 GPU 缺少 NVENC HEVC,H.265 将自动回退到 H.264。", diff --git a/i18n/locales/zh_Hant.json b/i18n/locales/zh_Hant.json index 9f16b379f..69f330732 100644 --- a/i18n/locales/zh_Hant.json +++ b/i18n/locales/zh_Hant.json @@ -1989,6 +1989,25 @@ "playcast": "Playcast", "playcast_description": "啟用 Playcast,取代直接使用 TV 連接埠。", "playcast_learn_more": "了解更多", + "relay_title": "邊緣中繼 (Cloudflare)", + "relay_description": "透過 Cloudflare 而非本伺服器為 Playcast 觀眾提供服務。遊戲伺服器仍會將轉播傳送到這裡,但使用 playcast 觀戰的玩家與直播會透過 Cloudflare Worker 讀取,它會在觀眾附近快取每個片段。Worker 需要一個位於你在 Cloudflare 上之網域下的主機名稱。區域網路伺服器一律使用本伺服器。", + "relay_builtin": "觀眾由本伺服器提供服務", + "relay_worker": "觀眾由 {url} 提供服務", + "relay_use_builtin": "改由本伺服器提供", + "relay_hostname": "主機名稱", + "relay_hostname_hint": "此 Cloudflare 帳戶中某個網域下的新主機名稱,例如 playcast.example.com。Cloudflare 會建立其 DNS 記錄與憑證。", + "relay_account_id": "Cloudflare 帳戶 ID", + "relay_account_id_hint": "可在 Cloudflare 主控台的 Workers & Pages 下,或任一網域的概觀頁面找到。", + "relay_api_token": "Cloudflare API 權杖", + "relay_api_token_hint": "需要 帳戶 › Workers Scripts › 編輯 以及 區域 › 區域 › 讀取 權限。只用於此次部署,不會儲存。", + "relay_deploy": "部署到 Cloudflare", + "relay_deployed": "邊緣中繼已部署", + "relay_pending": "已部署到 {url}。Cloudflare 仍在核發憑證;開始回應後,請按「使用此 Worker」。", + "relay_manual": "自行部署", + "relay_manual_command": "將 cloudflare-workers/playcast-relay/wrangler.toml 中的路由設為你的主機名稱,然後在 5stack api 儲存庫的檢出目錄中執行:", + "relay_manual_paste": "然後貼上 Worker 的位址:", + "relay_use_worker": "使用此 Worker", + "relay_updated": "邊緣中繼已更新", "encoding_section": "編碼", "live_video_codec": "直播視訊編碼", "live_video_codec_description": "H.264 為預設選項,可在最廣泛的瀏覽器與裝置上相容,包括在每款瀏覽器上延遲最低的 WebRTC 路徑。H.265 (HEVC) 在同等品質下體積約小 30%,但 HEVC-over-WebRTC 僅支援 Safari 17+——Chrome 和 Firefox 的觀眾會回退到 HLS 路徑。若 GPU 缺少 NVENC HEVC,H.265 會自動回退到 H.264。", diff --git a/pages/settings/application/streaming.vue b/pages/settings/application/streaming.vue index ffb99b4b9..5ece0bb7d 100644 --- a/pages/settings/application/streaming.vue +++ b/pages/settings/application/streaming.vue @@ -6,6 +6,7 @@ import PageTransition from "~/components/ui/transitions/PageTransition.vue"; import SettingsPage from "~/components/settings/SettingsPage.vue"; import SettingsSection from "~/components/settings/SettingsSection.vue"; import SettingsSaveBar from "~/components/settings/SettingsSaveBar.vue"; +import PlaycastEdgeRelay from "~/components/settings/PlaycastEdgeRelay.vue";