1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Sichern eines MP3/AAC- oder HLS-Streams mit einem einzigen Schlüssel
In diesem Leitfaden wird erläutert, wie Sie die Kontrolle über Ihre Stromflüsse von Streaming Radio MP3/AAC oder HLS, indem Sie den Einzelschlüsselschutz (token) aktivieren, um z.B. zu entscheiden, ob ein Hörer Ihr Radio hören kann oder nicht.
Präambel
- Das Prinzip ist einfach: Bei jeder Verbindung werden Sie eine Anfrage an die Infomaniak API stellen, die Ihnen einen einzigartigen Token mit einer begrenzten Lebensdauer zurücksendet. Dieser Token wird es jedem erlauben, den Strom in diesem Zeitraum zu verbrauchen.
- Sie können einen MP3/AAC- oder HLS-Feed unabhängig voneinander schützen (z. B. für die Geolokalisierung).
- Die Aktivierung der Einschränkung beinhaltet eine Änderung der Stream-Konfiguration, die einige Minuten dauern kann, um auf Servern repliziert werden.
Einen Audiostream pro Schlüssel schützen
Um dies zu tun, gehen Sie einfach in die Beschränkungseinstellungen und aktivieren Sie den Token-Schutz auf dem Feed, den Sie sichern möchten:
- Klicken Sie hier um auf die Verwaltung Ihres Produkts im Infomaniak Manager zuzugreifen (Brauchst du Hilfe?).
- Direkt klicken auf den Namender betroffenen Ware zugeordnet werden.
- Klicken Sie auf den Namen des betreffenden Audiostreams.
- Klicken Sie auf Beschränkungen im linken Seitenmenü.
- Wählen Sie HLS bei Bedarf aus.
- Klicken Sie auf das Aktionsmenü ⋮auf der rechten Seite des betreffenden Elements.
- Klicken Sie auf Beschränkung durch Token:
Aktivieren Sie dann den Schutz.
Achtung, wenn Sie diese Option aktivieren, wird der Zugriff auf den Stream sofort für neue Verbindungen blockiert. Passen Sie Ihre Player an, um die Einschränkung zu berücksichtigen, wie im folgenden Beispiel gezeigt:
Erstellen Sie eine Radio-API token
Um Zugriff auf die Radio-API zu haben, müssen Sie sich in erster Linie mit einer token App authentifizieren. Dieser Schritt ist nur einmal zu tun. Um diese token-Anwendung zu erstellen, lesen Sie Dieser Leitfaden.
Das Scope ist... Radio und unbegrenzte Lebensdauer, um zu vermeiden, dass ein Code regelmäßig regeneriert werden muss. Sobald das Token erzeugt ist, kopieren Sie es, um es in das untenstehende Beispiel einzufügen.
Beispiel für die Verwendung in PHP-Sprache
Für MP3/AAC oder HLS kann der Code im Wesentlichen der gleiche sein, nur die URL, die in POST aufgerufen wird, ändert sich in ihrer Form.
Kleben Sie unten das generierte Token anstelle des angegebenen:
if (!defined('API_TOKEN')) {
define('API_TOKEN', 'AYF5lSh3c7Xy5974Fs12RTkTThujT-L9R4Xk2ZfGyP6sV7QqJ1oC3jD8nFtKzIxUeMw5oNzR6');
}
/**
* Fonction générique pour executer des requêtes cURL
*
* @param string $method Méthode HTTP (GET, POST, PUT, etc...)
* @param string $url Url de l'api a requêter
* @param array $headers Liste des en-têtes HTTP (l'autorisation doit être passée ici avec un ['Authorization: Bearer ']
* @param array $payload Un tableau contenant les données pour créer un token
* @return mixed
*/
function request(string $method, string $url, array $headers = [], array $payload = []): mixed{
// prepare options array
$opts = [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => $url,
CURLOPT_CUSTOMREQUEST => strtoupper($method),
];
// add payload if relevant
if ($payload && $method !== 'GET') {
$opts[CURLOPT_POSTFIELDS] = json_encode($payload);
}
$ch = curl_init();
curl_setopt_array($ch, $opts);
$result = curl_exec($ch);
if(curl_errno($ch)){
throw new Exception(curl_error($ch));
}
$data = json_decode($result, true);
if ($data['result'] === 'error') {
throw new Exception($data['error']['description'] ?? 'an error occured');
}
return $data['data'];
}
Wir erstellen das Token, die Token-Erstellungs-URL setzt sich wie folgt zusammen:
- Für einen MP3 / AAC-Stream
POST https://api.infomaniak.com/1/radios/acl/streams/mountpoint.mp3/token
Beispiel zum Schutz https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac
Die Straße wird sein: https://api.infomaniak.com/1/radios/acl/streams/newradiotest-128.aac/token
- Für einen HLS-Stream
POST https://api.infomaniak.com/1/radios/acl/hls_streams/<stream>/token
Beispiel zum Schutz https://myradiostream.radiohls.infomaniak.com/myradiostream/manifest.m3u8
Die Straße wird sein: https://api.infomaniak.com/1/radios/acl/hls_streams/myradiostream/token
Beispiel im Fall von MP3 / AAC, denken Sie daran, anzupassen:
$token = request(
'POST',
'https://api.infomaniak.com/1/radios/acl/streams/newradiotest-128.aac/token',
// en-tête d'authorization
[
'Authorization: Bearer ' . API_TOKEN,
'Content-Type: application/json',
],
/**
* payload pour créer le token, vous pouvez passer les valeurs suivantes
* window | 300 | optionnel | durée de validité du token (default: 5 minutes)
*/
[
'window' => 3600, // 1h validity
]
);
Es ist wichtig zu beachten, dass, wenn dieser Code zum Zeitpunkt des Ladens der Seite generiert wird, der Zuhörer "window" Sekunden haben, um die Wiedergabe des Streams zu starten. Nach Ablauf dieser Frist wird der Token auslaufen, und der Feed kann nicht mehr gestartet werden, es sei denn, die Seite wird neu geladen. Abhängig von Ihren Bedürfnissen und Ihrem Anwendungsfall, wird es notwendig sein, diesen Zeitraum auf die bestmögliche Weise anzupassen.
Sie müssen auch die URL für die Wiedergabe Ihres Streams anstelle der angegebenen URL ersetzen, während der Parameter beibehalten wird. $token
Am Ende. Und schließlich zeigt man den Player an (hier ist ein einfaches html5-Tag, aber man kann natürlich jede Überschichtung hinzufügen, nachdem der Token in die Einstellungen übergeben wurde. $_GET
der URL).
$streamUrl = "https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac?$token";
echo "<audio controls=""><source src="$streamUrl"></audio>";