← Cloudflare Stream / stream / uploading-videos
Obnovitelné nahrávání a velké soubory (tus)
Pokud potřebujete nahrát video větší než 200 MB, musíte použít protokol tus ↗. I když je video menší než 200 MB, pokud je vaše připojení potenciálně nespolehlivé, Cloudflare doporučuje použít protokol tus, protože podporuje obnovení přenosu. Obnovitelné nahrávání zajišťuje, že lze nahrávání přerušit a později v něm pokračovat, aniž by bylo nutné znovu nahrávat již přenesená data.
Chcete-li protokol tus použít pro videa koncových uživatelů, viz Direct Creator Uploads s tus.
Pokud je vaše video menší než 200 MB a vaše připojení je spolehlivé, můžete použít základní POST požadavek. Pro přímé nahrávání přes API pomocí vašeho API tokenu se podívejte na Nahrání přes odkaz. Informace o nahrávání koncovými uživateli najdete v Základní požadavek POST pro přímé nahrávání tvůrci.
Požadavky
- Obnovitelné nahrávání vyžaduje minimální velikost bloku 5,242,880 bajtů, pokud celý soubor není menší než tato hodnota. Pokud lze očekávat spolehlivé připojení klienta, zvyšte pro lepší výkon velikost bloku na 52,428,800 bajtů.
- Maximální velikost bloku je 209,715,200 bajtů.
- Velikost bloku musí být dělitelná 256 KiB (256x1024 bajtů). Zaokrouhlete velikost bloku na nejbližší násobek 256 KiB. Poslední blok nahrávání, které se vejde do jednoho bloku, je z tohoto požadavku vyjmutý.
Předpoklady
Než budete moci nahrát video pomocí tus, budete si muset stáhnout klienta tus.
Další informace naleznete v tus klient pro Python ↗ který je dostupný prostřednictvím pip, správce balíčků jazyka Python.
pip install -U tus.pyNahrání videa pomocí tus
tus-upload --chunk-size 52428800 --header \
Authorization "Bearer <API_TOKEN>"
<PATH_TO_VIDEO> https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/streamINFO Creating file endpoint
INFO Created: https://api.cloudflare.com/client/v4/accounts/d467d4f0fcbcd9791b613bc3a9599cdc/stream/dd5d531a12de0c724bd1275a3b2bc9c6
...Příklad v Golangu
Než začnete, importujte klienta tus, například go-tus ↗ k nahrávání ze svých aplikací v Go.
go-tus knihovna nevrací hlavičky odpovědi volající funkci, což znesnadňuje čtení ID videa z stream-media-id hlavička. Jako řešení vytvořte Direct Creator Upload odkaz. Tato odpověď API bude obsahovat jak koncový bod TUS, tak ID videa. Nastavení Creator ID není povinné.
package main
import (
"net/http"
"os"
tus "github.com/eventials/go-tus"
)
func main() {
accountID := "<ACCOUNT_ID>"
f, err := os.Open("videofile.mp4")
if err != nil {
panic(err)
}
defer f.Close()
headers := make(http.Header)
headers.Add("Authorization", "Bearer <API_TOKEN>")
config := &tus.Config{
ChunkSize: 50 * 1024 * 1024, // Required a minimum chunk size of 5 MB, here we use 50 MB.
Resume: false,
OverridePatchMethod: false,
Store: nil,
Header: headers,
HttpClient: nil,
}
client, _ := tus.NewClient("https://api.cloudflare.com/client/v4/accounts/"+ accountID +"/stream", config)
upload, _ := tus.NewUploadFromFile(f)
uploader, _ := client.CreateUpload(upload)
uploader.Upload()
}Pokud nahrávání spouštíte v goroutině, můžete zjistit i jeho průběh.
// returns the progress percentage.
upload.Progress()
// returns whether or not the upload is complete.
upload.Finished()Viz go-tus ↗ pro funkce, jako je obnovení nahrávání.
Příklad v Node.js
Než začnete, nainstalujte tus-js-client.
npm i tus-js-clientVytvořte index.js soubor a nakonfigurujte:
- Koncový bod API s vaším Cloudflare Account ID.
- Hlavičky požadavku obsahující API token.
var fs = require("fs");
var tus = require("tus-js-client");
// Specify location of file you would like to upload below
var path = __dirname + "/test.mp4";
var file = fs.createReadStream(path);
var size = fs.statSync(path).size;
var mediaId = "";
var options = {
endpoint: "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/stream",
headers: {
Authorization: "Bearer <API_TOKEN>",
},
chunkSize: 50 * 1024 * 1024, // Required a minimum chunk size of 5 MB. Here we use 50 MB.
retryDelays: [0, 3000, 5000, 10000, 20000], // Indicates to tus-js-client the delays after which it will retry if the upload fails.
metadata: {
name: "test.mp4",
filetype: "video/mp4",
// Optional if you want to include a watermark
// watermark: '<WATERMARK_UID>',
},
uploadSize: size,
onError: function (error) {
throw error;
},
onProgress: function (bytesUploaded, bytesTotal) {
var percentage = ((bytesUploaded / bytesTotal) * 100).toFixed(2);
console.log(bytesUploaded, bytesTotal, percentage + "%");
},
onSuccess: function () {
console.log("Upload finished");
},
onAfterResponse: function (req, res) {
return new Promise((resolve) => {
var mediaIdHeader = res.getHeader("stream-media-id");
if (mediaIdHeader) {
mediaId = mediaIdHeader;
}
resolve();
});
},
};
var upload = new tus.Upload(file, options);
upload.start();Zadání možností nahrávání
Protokol tus umožňuje přidat volitelné parametry v Upload-Metadata hlavička ↗.
Podporované možnosti v Upload-Metadata
Nastavení libovolných hodnot metadata v Upload-Metadata hlavička nastavuje hodnoty v klíč meta v rozhraní Stream API.
-
name- Nastavením tohoto klíče se nastaví
meta.namev API a zobrazit tuto hodnotu jako název videa na dashboardu.
- Nastavením tohoto klíče se nastaví
-
requiresignedurls- Pokud je tento klíč přítomen, přehrávání tohoto videa bude po nahrání vyžadovat použití podepsaných URL adres.
-
scheduleddeletion- Určuje datum a čas, kdy bude video smazáno. Po smazání již video nelze zobrazit a nezapočítává se do úložiště pro účely fakturace. Zadané datum a čas nesmí být dřívější než 30 dní ani pozdější než 1,096 dní od časového razítka vytvoření videa.
-
allowedorigins- Pole řetězců s výčtem originů, které smí video zobrazovat. Tím se nastaví nastavení Allowed Origins pro video.
-
thumbnailtimestamppct- Zadání výchozího náhledu procento časového razítka. Upozorňujeme, že percentage je desetinné číslo v rozsahu od 0.0 do 1.0.
-
watermark- UID profilu vodoznaku.
Nastavení vlastnosti creator
Nastavení hodnoty creator v Upload-Creator hlavičku lze použít k identifikaci tvůrce video obsahu, čímž propojíte způsob, jakým identifikujete své uživatele nebo tvůrce, s videi ve vašem účtu Stream.
Příklady nastavení a úpravy ID tvůrce najdete v Přiřazení videí tvůrcům.
Získání ID videa při použití tus
Když odešlete počáteční požadavek tus, Stream odpoví adresou URL v Location hlavička. Ačkoli tato adresa URL může obsahovat ID videa, nedoporučuje se toto ID z adresy URL získávat parsováním.
Místo toho byste měli použít stream-media-id HTTP hlavičku v odpovědi pro získání ID videa.
Například požadavek zaslaný na https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/stream pomocí protokolu tus bude obsahovat HTTP hlavičku podobnou následující:
stream-media-id: cab807e0c477d01baq20f66c3d1dfc26cf