INTEGRITY Dokumentace

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

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.

Instalace Python klienta
pip install -U tus.py

Nahrání videa pomocí tus

Nahrání pomocí tus
tus-upload --chunk-size 52428800 --header \
Authorization "Bearer <API_TOKEN>"
<PATH_TO_VIDEO> https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/stream
odpověď tus
INFO 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é.

Nahrání pomocí Golang
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.

Získání průběhu nahrávání
// 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-client

Vytvořte index.js soubor a nakonfigurujte:

Konfigurace index.js
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.

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