1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Einen MP3/AAC- oder HLS-Stream mit einem einzigartigen Schlüssel sichern
Diese Anleitung 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 z.B. zu entscheiden, ob ein Hörer Ihren Radiosender hören darf oder nicht.
Vorwort
- Der Grundsatz ist einfach: Bei jeder Verbindung führen Sie eine Anfrage an die Infomaniak API aus, die Ihnen im Gegenzug einen einzigartigen Token mit einer begrenzten und anpassbaren 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 (ebenso wie die Geolokalisierung).
- Die Aktivierung der Einschränkung erfordert eine Änderung der Stream-Konfiguration, die einige Minuten dauern kann, bis sie auf den Servern repliziert wird.
Einen Audio-Stream durch einen Schlüssel schützen
Dazu müssen Sie nur die Restriktionsparameter aufrufen und den Token-Schutz für den Stream aktivieren, den Sie sichern möchten:
- Klicken Sie hier, um auf die Verwaltung Ihres Produkts im Infomaniak Manager zuzugreifen (Hilfe benötigen?).
- Klicken Sie direkt auf den Name des betreffenden Produkts.
- Klicken Sie auf den Namen des betreffenden Audio-Streams.
- Klicken Sie auf Einschränkungen im linken Seitenmenü.
- Wählen Sie HLS bei Bedarf aus.
- Klicken Sie auf das Aktionsmenü ⋮, das sich rechts neben dem betreffenden Element befindet.
- Klicken Sie auf Token-Beschränkung:
Aktivieren Sie dann den Schutz.
Achtung, sobald 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:
Radio-API-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 dieser andere Leitfaden zur Kenntnis.
Der Bereich ist Radio und die Lebensdauer ist unbegrenzt, um das erneute Generieren eines Codes zu vermeiden. Sobald der Token generiert ist, kopieren Sie ihn und fügen Sie ihn in das untenstehende Beispiel ein.
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 Token-Erstellung 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 wird der Token ablaufen, und der Stream kann nicht mehr gestartet werden, es sei denn, die Seite wird neu geladen. Je nach Ihren Anforderungen und Ihrem Anwendungsfall muss dieser Zeitraum entsprechend angepasst werden.
Ersetzen Sie unten die URL zum Abspielen Ihres Streams durch die angegebene, wobei der Parameter $token
am Ende erhalten bleibt. Schließlich wird der Player angezeigt (hier ein einfaches HTML5-Tag, aber Sie können natürlich jede beliebige Oberfläche hinzufügen, da 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>";