← Cloudflare Stream / stream / edit-videos
Přidání titulků
Přidávání titulků k vaší video knihovně.
Přidání nebo úprava titulku
Titulky lze k videu přidat dvěma způsoby: vygenerováním pomocí AI nebo nahráním souboru s titulky.
Chcete-li k videu vytvořit nebo upravit titulky, je potřeba Cloudflare API Token ↗ je povinné.
<LANGUAGE_TAG> musí odpovídat formát BCP 47 ↗. Pro pohodlí je k dispozici mnoho běžných
jazykových kódů na konci tohoto dokumentu.
Pokud jazyk, který přidáváte, není uveden v tabulce, můžete příslušnou
hodnotu najít prostřednictvím Registr IANA ↗, který udržuje seznam jazykových kódů. Chcete-li najít hodnotu,
kterou je třeba odeslat, vyhledejte daný jazyk. Níže je uveden příklad hodnoty z IANA pro případ,
kdy hledáme hodnotu, kterou je třeba odeslat pro turecké titulky:
%%
Subtag: tr
Description: Turkish
Added: 2005-10-16
Suppress-Script: Latn
%% Subtag kód značí hodnotu tr. Toto je hodnota, kterou byste měli odeslat
jako language na konci HTTP požadavku.
Popisek se vygeneruje z uvedeného jazyka. Bude viditelný pro
výběr uživatelem v přehrávači. Pokud je například odeslán tr, štítek Türkçe bude
vytvořen; pokud je odeslán de, štítek Deutsch se vytvoří.
Generování titulků
Generované titulky využívají technologii převodu řeči na text založenou na umělé inteligenci k vytvoření skrytých titulků pro vaše videa.
Než lze vygenerovat titulky, video musí být nahrané a ve stavu ready.
V následujících příkladech URL adres se na UID videa odkazuje jako na <VIDEO_UID>.
Chcete-li dostávat webhooky, jakmile video po nahrání přejde do stavu ready, postupujte podle
pokynů uvedených v použití webhooků.
Titulky lze vygenerovat pro následující jazyky:
cs- češtinanl- nizozemštinaen- angličtinafr- francouzštinade- němčinait- italštinaja- japonštinako- korejštinapl- polštinapt- portugalštinaru- ruštinaes- španělština
Při generování titulků je vytvářejte pro jazyk, kterým se mluví ve zvukové stopě.
Videa mohou obsahovat titulky pro několik jazyků, ale každý jazyk musí být jedinečný. Video tak může mít přiřazené anglické, francouzské a německé titulky, ale nemůže mít dva anglické titulky. Pokud jste již pro video nahráli anglické titulky, musíte je nejprve smazat, abyste mohli vytvořit vygenerované anglické titulky. Postup smazání titulků najdete níže.
<LANGUAGE_TAG> musí odpovídat formátu BCP 47. Značka pro angličtinu je en.
V tagu můžete zadat oblast, například en-GB, které vykreslí štítek
zobrazující British English pro titulky.
curl -X POST \
-H 'Authorization: Bearer <API_TOKEN>' \
https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/stream/<VIDEO_UID>/captions/<LANGUAGE_TAG>/generateconst client = new Cloudflare({
apiEmail: process.env['CLOUDFLARE_EMAIL'],
apiKey: process.env['CLOUDFLARE_API_KEY'],
});
const caption = await client.stream.captions.language.create("<VIDEO_UID>", "en", {
account_id: '<ACCOUNT_ID>',
});Podívejte se na celý Stream Referenční dokumentace REST API a SDK kde najdete podrobnosti o používání REST API z externích aplikací, včetně předpřipravených SDK pro externí aplikace v TypeScriptu, Pythonu nebo Go.
export default {
async fetch(request, env, ctx): Promise<Response> {
const videoId = "<VIDEO_UID>";
const caption = await env.STREAM.video(videoId).captions.generate("en");
return new Response(JSON.stringify({ caption }));
},
} satisfies ExportedHandler<{ STREAM: StreamBinding }>;{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "<ENTER_WORKER_NAME>",
"main": "src/index.ts",
"compatibility_date": "$today",
"observability": {
"enabled": true
},
"stream": {
"binding": "STREAM"
}
}Podívejte se na celý Referenční dokumentace API pro Workers Stream binding.
Příklad odpovědi:
{
"result": {
"language": "en",
"label": "English (auto-generated)",
"generated": true,
"status": "inprogress"
},
"success": true,
"errors": [],
"messages": []
}Výsledek poskytne status označující průběh generování titulků.
Existují tři stavy: inprogress, ready a error. Upozorňujeme, že se k popisku přidává
(auto-generated).
Jakmile bude vygenerovaný titulek hotový, automaticky se objeví ve video přehrávači a v manifestu videa.
Pokud titulky přejdou do chybového stavu, můžete se pokusit je znovu vygenerovat tak, že je nejprve smažete a poté použijete výše uvedený koncový bod. Postup smazání je uveden níže.
Nahrání souboru
Všimněte si dvou změn, pokud upravíte vygenerovaný titulek: pole generated se
změní na false a část popisku (auto-generated) bude odstraněna.
Chcete-li vytvořit nebo nahradit soubor s titulky:
curl -X PUT \
-H 'Authorization: Bearer <API_TOKEN>' \
-F file=@/Users/mickie/Desktop/example_caption.vtt \
https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/stream/<VIDEO_UID>/captions/<LANGUAGE_TAG>const client = new Cloudflare({
apiEmail: process.env['CLOUDFLARE_EMAIL'],
apiKey: process.env['CLOUDFLARE_API_KEY'],
});
const caption = await client.stream.captions.language.update("<VIDEO_UID>", "en", {
account_id: '<ACCOUNT_ID>',
file: '@/path/to/caption.vtt',
});Podívejte se na celý Stream Referenční dokumentace REST API a SDK kde najdete podrobnosti o používání REST API z externích aplikací, včetně předpřipravených SDK pro externí aplikace v TypeScriptu, Pythonu nebo Go.
export default {
async fetch(request, env, ctx): Promise<Response> {
const videoId = "<VIDEO_UID>";
const language = "en";
// Obtain a ReadableStream from a file upload, fetch, or other source
const captionStream: ReadableStream = request.body!;
const caption = await env.STREAM.video(videoId).captions.upload(language, captionStream);
return new Response(JSON.stringify({ caption }));
},
} satisfies ExportedHandler<{ STREAM: StreamBinding }>;{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "<ENTER_WORKER_NAME>",
"main": "src/index.ts",
"compatibility_date": "$today",
"observability": {
"enabled": true
},
"stream": {
"binding": "STREAM"
}
}Podívejte se na celý Referenční dokumentace API pro Workers Stream binding.
Ukázková odpověď na přidání nebo úpravu titulků
{
"result": {
"language": "en",
"label": "English",
"generated": false,
"status": "ready"
},
"success": true,
"errors": [],
"messages": []
}Výpis titulků přiřazených k videu
Chcete-li zobrazit titulky přiřazené k videu.
Upozorňujeme, že tento seznam výsledků bude obsahovat i vygenerované titulky, které jsou inprogress
a error stav:
curl -H 'Authorization: Bearer <API_TOKEN>' \
https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/stream/<VIDEO_UID>/captionsconst client = new Cloudflare({
apiEmail: process.env['CLOUDFLARE_EMAIL'],
apiKey: process.env['CLOUDFLARE_API_KEY'],
});
const captions = await client.stream.captions.get("<VIDEO_UID>", {
account_id: '<ACCOUNT_ID>',
});Podívejte se na celý Stream Referenční dokumentace REST API a SDK kde najdete podrobnosti o používání REST API z externích aplikací, včetně předpřipravených SDK pro externí aplikace v TypeScriptu, Pythonu nebo Go.
export default {
async fetch(request, env, ctx): Promise<Response> {
const videoId = "<VIDEO_UID>";
const captions = await env.STREAM.video(videoId).captions.list();
return new Response(JSON.stringify({ captions }));
},
} satisfies ExportedHandler<{ STREAM: StreamBinding }>;{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "<ENTER_WORKER_NAME>",
"main": "src/index.ts",
"compatibility_date": "$today",
"observability": {
"enabled": true
},
"stream": {
"binding": "STREAM"
}
}Podívejte se na celý Referenční dokumentace API pro Workers Stream binding.
Ukázková odpověď na získání titulků přiřazených k videu
{
"result": [
{
"language": "en",
"label": "English (auto-generated)",
"generated": true,
"status": "inprogress"
},
{
"language": "de",
"label": "Deutsch",
"generated": false,
"status": "ready"
}
],
"success": true,
"errors": [],
"messages": []
}Načtení souboru s titulky
Chcete-li zobrazit soubor s titulky WebVTT, můžete odeslat požadavek GET:
curl \
-H 'Authorization: Bearer <API_TOKEN>' \
https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/stream/<VIDEO_UID>/captions/<LANGUAGE_TAG>/vttUkázková odpověď na získání souboru s titulky pro video
WEBVTT
1
00:00:00.000 --> 00:00:01.560
This is an example of
2
00:00:01.560 --> 00:00:03.880
a WebVTT caption response.Odstranění titulků
Chcete-li odstranit titulky přiřazené k vašemu videu:
curl -X DELETE \
-H 'Authorization: Bearer <API_TOKEN>' \
https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/stream/<VIDEO_UID>/captions/<LANGUAGE_TAG>const client = new Cloudflare({
apiEmail: process.env['CLOUDFLARE_EMAIL'],
apiKey: process.env['CLOUDFLARE_API_KEY'],
});
await client.stream.captions.language.delete("<VIDEO_UID>", "en", {
account_id: '<ACCOUNT_ID>',
});Podívejte se na celý Stream Referenční dokumentace REST API a SDK kde najdete podrobnosti o používání REST API z externích aplikací, včetně předpřipravených SDK pro externí aplikace v TypeScriptu, Pythonu nebo Go.
export default {
async fetch(request, env, ctx): Promise<Response> {
const videoId = "<VIDEO_UID>";
await env.STREAM.video(videoId).captions.delete("en");
return new Response(JSON.stringify({ success: true }));
},
} satisfies ExportedHandler<{ STREAM: StreamBinding }>;{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "<ENTER_WORKER_NAME>",
"main": "src/index.ts",
"compatibility_date": "$today",
"observability": {
"enabled": true
},
"stream": {
"binding": "STREAM"
}
}Podívejte se na celý Referenční dokumentace API pro Workers Stream binding.
Pokud existuje záznam v errors pole v odpovědi, titulky nebyly
odstraněny.
Ukázková odpověď na smazání titulků
{
"result": "",
"success": true,
"errors": [],
"messages": []
}Omezení
- Než lze k videu připojit titulek, musí být video nahrané. V následujících
příkladech URL adres se na ID videa odkazuje jako na
media_id. - Stream podporuje pouze WebVTT ↗ ve formátovaných souborech s titulky. Pokud máte soubor s titulky v jiném formátu, použijte nástroj pro převod souboru do formátu WebVTT ↗ před jeho nahráním.
- Videa mohou obsahovat titulky ve více jazycích, ale každý jazyk musí být jedinečný. Video tak může mít přiřazené anglické, francouzské a německé titulky, ale nemůže mít dva francouzské titulky.
- Velikost každého souboru s titulky je omezena na 10 MB. Kontaktujte podporu pokud potřebujete nahrát větší soubor.
Nejběžnější jazykové kódy
| Kód jazyka | Jazyk |
|---|---|
| zh | Mandarínská čínština |
| hi | Hindština |
| es | Španělština |
| en | Angličtina |
| ar | Arabština |
| pt | Portugalština |
| bn | Bengálština |
| ru | Ruština |
| ja | Japonština |
| de | Němčina |
| pa | Paňdžábština |
| jv | Jávština |
| ko | Korejština |
| vi | vietnamština |
| fr | Francouzština |
| ur | Urdština |
| it | Italština |
| tr | turečtina |
| fa | Perština |
| pl | Polish |
| uk | Ukrajinština |
| my | Birmánština |
| . | Thajština |