1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Sichern eines MP3/AAC- oder HLS-Streams mit einem eindeutigen Schlüssel
Dieser Leitfaden erklärt, wie Sie die Kontrolle über Ihre MP3/AAC- oder HLS-Streaming-Radio-Streams behalten, indem Sie den Schutz durch einen eindeutigen Schlüssel (Token) aktivieren, um beispielsweise zu entscheiden, ob ein Hörer Ihren Radiosender hören darf oder nicht.
Vorwort
- Das Prinzip ist einfach: Bei jeder Verbindung führen Sie eine Anfrage an die Infomaniak-API durch, die Ihnen im Gegenzug einen eindeutigen Token mit einer begrenzten und einstellbaren Lebensdauer zurücksendet. Dieser Token ermöglicht es jedem, der ihn besitzt, den Stream während dieser Zeit zu nutzen.
- Sie können einen MP3/AAC- oder HLS-Stream unabhängig voneinander schützen (das Gleiche gilt übrigens für die Geolokalisierung).
- Die Aktivierung der Einschränkung erfordert eine Änderung der Stream-Konfiguration, die einige Minuten in Anspruch nehmen kann, um auf den Servern repliziert zu werden.
Audio-Stream durch eindeutigen Schlüssel schützen
Dazu müssen Sie lediglich zu den Einschränkungsparametern gehen und den Token-Schutz für den Stream aktivieren, den Sie sichern möchten:
- Hier klicken, um auf die Verwaltung Ihres Produkts im Infomaniak-Manager zuzugreifen (Hilfe benötigt?).
- Klicken Sie direkt auf den Namen des betreffenden Produkts.
- Klicken Sie auf den Namen des betreffenden Audio-Streams.
- Klicken Sie im linken Seitenmenü auf Einschränkungen.
- Wählen Sie bei Bedarf HLS aus.
- Klicken Sie auf das Aktionsmenü ⋮ rechts neben dem betreffenden Element.
- Klicken Sie auf Token-Einschränkung:
Aktivieren Sie dann den Schutz.
Achtung, sobald Sie diese Option aktivieren, wird der Zugriff auf den Stream für neue Verbindungen sofort blockiert. Passen Sie Ihre Player an, um die Einschränkung zu berücksichtigen, wie im folgenden Beispiel gezeigt:
API-Radio-Token erstellen
Um auf die Radio-API zugreifen zu können, müssen Sie sich zunächst mit einem Anwendungstoken authentifizieren. Dieser Schritt muss nur einmal durchgeführt werden. Um diesen Anwendungstoken zu erstellen, nehmen Sie sich diesen anderen Leitfaden zu Hilfe.
Der Umfang ist radio und die unbegrenzte Lebensdauer, um zu vermeiden, dass ein Code regelmäßig regeneriert werden muss. Sobald der Token generiert ist, kopieren Sie ihn, um ihn in das untenstehende Beispiel einzufügen.
Beispiel für die Verwendung in der Programmiersprache PHP
Für MP3/AAC oder HLS kann der Code im Wesentlichen derselbe sein, nur die in POST aufgerufene URL ändert sich in ihrer Form.
Fügen Sie unten den generierten Token anstelle des angegebenen ein:
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 werden den Token erstellen, die URL zur Erstellung des Tokens 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 von https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac
der Pfad wird: 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 von https://myradiostream.radiohls.infomaniak.com/myradiostream/manifest.m3u8
der Pfad wird: 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 Hörer "window" Sekunden Zeit hat, um die Wiedergabe des Streams zu starten. Nach Ablauf dieser Frist verfällt der Token und der Stream kann nicht mehr gestartet werden, es sei denn, die Seite wird neu geladen. Je nach Ihren Anforderungen und Ihrem Anwendungsfall wird es notwendig sein, diese Frist auf die bestmögliche Weise anzupassen.
Es muss auch die Abspiel-URL Ihres Streams unten anstelle der angegebenen ersetzt werden, wobei der Parameter $token
am Ende beibehalten wird. Und schließlich wird der Player angezeigt (hier ein einfaches HTML5-Tag, aber es kann natürlich jede beliebige Schicht hinzugefügt werden, wobei der Token in den Parametern $_GET
der URL übergeben wird).
$streamUrl = "https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac?$token";
echo "<audio controls=""><source src="$streamUrl"></audio>";