# Content-Absicherung

Unsere Plattform bietet Methoden zur Absicherung von Live- und Video On-Demand Content vor unberechtigten Zugriffen.

{% hint style="info" %}
Bei der Absicherung ist zwischen der Player Protection und Content Protection zu unterscheiden. Die Schlüsselerzeugung für die Content Protection muss nur in Szenarien verwendet werden, wenn unser Videoplayer **nicht** zum Einsatz kommt. Wenn die Content Protection aktiv ist, kümmert sich unser Player selbständig um die Erzeugung der notwendigen Schlüssel.
{% endhint %}

### Projektschlüssel (Private Key) <a href="#page_projektschlussel_-private_key" id="page_projektschlussel_-private_key"></a>

Jedes Projekt in Ihrem Kundenkonto hat einen eigenen **Project Key**. Diesen benötigen Sie zur Nutzung der einzelnen Schutzmechanismen.

Um den Schlüssel zu erhalten, gehen Sie in Ihre Projektübersicht und öffnen den Bereich **Einstellungen**. Hier können Sie den Projektschlüssel kopieren oder auch einen neuen Schlüssel erzeugen.

### Player Protection  <a href="#page_player_protection" id="page_player_protection"></a>

Bei dieser Methode wird der 3Q Player mit einem **Key** vor unberechtigten Zugriffen geschützt.  Diese Methode kann für einzelne Videodateien oder für alle Inhalte eines Projektes genutzt werden.

Zur Ausführung erzeugt der Kunde Serverseitig einen **Key** und aktiviert in der Player-Konfiguration **Schutz des Players mit Key**.

{% hint style="danger" %}
Ist die Funktion aktiv, kann der 3Q Player ohne den Key **nicht** aufgerufen werden-
{% endhint %}

#### Beispiel Schlüsselerzeugung und Übergabe an den Player <a href="#page_beispiel_schlusselerzeugung_und_ubergabe_an_den_player" id="page_beispiel_schlusselerzeugung_und_ubergabe_an_den_player"></a>

Serverseitiger Code

```
// serverside.php
$_project_id = 'project_id';
$_project_key = 'project_key';
$timestamp = time() + 600; // Gültigkeit des Schlüssels, aktuelle Zeit zzgl. 10 Minuten
$key = md5($_project_id.$_project_key.$timestamp);
```

**JavaScript Integration (js3q)**

Eine Anleitung zur Integration des Players und Erzeugung des Keys finden Sie hier: <https://docs.3q.video/en/Player_API/Basic_usage.html>.

**Iframe Integration**

Bei der Iframe Integration kann der Key und Timestamp mittels `GET`-Parameter.

Beispiel Integration Iframe mit Schlüssel:

```
<iframe id="sdn" title="3Q SDN" width="640px" height="360px" src="https://playout.3qsdn.com/59422d06-9ed4-11ea-97a4-002590c750be?key=[key]&timestamp=[timestamp]" frameborder="0" scrolling="no" allowfullscreen></iframe>
```

### Content Distribution Protection <a href="#page_content_distribution_protection" id="page_content_distribution_protection"></a>

Mit der Methode **Content Distribution Protection** kann die Auslieferung von Content mit unserem Player, direkte Streaming URLs oder Download URLs geschützt werden.

{% hint style="info" %}
Wenn Sie diese Option aktivieren und unseren Player integrieren, wird die Schlüsselerzeugung für diese Absicherung automatisch geregelt. Nur im Fall dessen, dass Sie unseren Player nicht verwenden, z.B. bei progressive Download oder mit einem Videoplayer von einem Drittanbieter, müssen Sie die Schlüssel selbstständig erzeugen.
{% endhint %}

Dieses Feature aktivieren Sie über die **Projekt Einstellungen (BILD EINFÜGEN) > Content-Absicherung** im gewünschten Projekt. Fortan wird sämtlicher Content in unserem Videoplayer automatisch mit diesem Schutzmechanismus ausgeliefert.

Für die Nutzung der direkten Streaming- und Download-URLs **ohne unseren Player** ist es nun notwendig, für jede Nutzung einen Schlüssel zu generieren.

#### Beispiel Schlüsselerzeugung <a href="#page_beispiel_schlusselerzeugung" id="page_beispiel_schlusselerzeugung"></a>

Schlüssel mit Hilfe von PHP oder einer anderen Programmiersprache erzeugen:

```
// token.php
function generateToken() {

$expires = time() + 600; // Gültigkeit des Schlüssels, aktuelle Zeit zzgl. 10 Minuten
$_user_agent = ''; // User Agent
$project_key = ''; // Your private project key
$md5 = md5($expires.$project_key.$_user_agent, false);

return $md5.'/'.$expires;
}
```

Link generieren:

```
https://sdn-global-streaming-cache.3qsdn.com/s/{generateToken()}/3144/files/17/11/766971/3144-F98zkwncqTR7BMg2.ism/manifest.m3u8?format=hls&mime=mp4&source=html5
```

{% hint style="danger" %}
Es ist essentiell, dass für jeden Aufruf ein eigener Schlüssel generiert wird.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://platform.docs.3q.video/interface/content-absicherung.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
