Il existe de nombreux articles sur le serveur multimédia WebRTC appelé passerelle Janus, Il n'y a presque aucune utilisation non officielle de l'API fournie. J'ai eu du mal à le découvrir, alors j'aimerais le résumer ici.
Il existe deux principaux types d'API fournis par Janus.
Une API pour gérer et surveiller Janus. Je vais l'utiliser dans cet article.
Janus propose un certain nombre de plugins pour les appels vidéo, le streaming, le SIP, etc. C'est une API pour faire fonctionner le plug-in. Je vais l'utiliser dans le prochain article.
Définissez le mot de passe à utiliser lors de l'appel de l'API Admin.
/usr/local/etc/janus/janus.cfg
[general]
admin_secret = password
Définissez-le pour qu'il soit disponible via Websocket. Cette fois, nous définissons ws, mais si le chiffrement est requis, définissons wss et préparons le certificat. Assurez-vous également que le port spécifié ici n'est pas bloqué par FW ou autre.
/usr/local/etc/janus/janus.transport.websockets.cfg
[admin]
admin_ws = yes
admin_ws_port = 7188
La version Python est 2.7. Cette fois, je surveillerai les informations des utilisateurs qui ont accédé à Janus.
Tout d'abord, obtenez la liste des sessions auxquelles vous accédez.
python
import websocket
import json
import random
import string
#Point de terminaison Janus
janus_admin_url = 'ws://10.0.0.1:7188/janus'
#Mot de passe administrateur
janus_admin_secret = 'password'
#Génération de caractères aléatoires
def random_string(length, seq=string.digits):
sr = random.SystemRandom()
return ''.join([sr.choice(seq) for i in range(length)])
#8 caractères aléatoires
transaction = random_string(8)
# list_Créez un Json pour appeler la méthode sessions
data = {"janus":'list_sessions', "admin_secret": janus_admin_secret, "transaction": transaction}
#Créer une connexion Websocket
websock = websocket.create_connection(janus_admin_url,subprotocols=["janus-admin-protocol"])
#Envoyer
websock.send(json.dumps(data))
#Recevoir
rejson = websock.recv()
#Afficher le résultat de la réception
print rejson
{
"janus": "success",
"transaction": "73677159",
"sessions": [
311091039069809
]
}
Ensuite, récupérez la liste que la session gère. Plusieurs poignées sont renvoyées, par exemple si plusieurs plug-ins sont utilisés.
python
sessions_list = json.loads(rejson).get('sessions',[])
# list_Créez un Json qui appelle la méthode handles
data = {"janus":'list_handles', "admin_secret": janus_admin_secret, "transaction": transaction, "session_id": sessions_list[0]}
websock.send(json.dumps(data))
rejson = websock.recv()
print rejson
{
"janus": "success",
"transaction": "73677159",
"session_id": 311091039069809,
"handles": [
1721128026873430
]
}
Enfin, obtenez les informations relatives à ce descripteur.
python
handles_list = json.loads(rejson).get('handles',[])
# handle_Créez un Json pour appeler la méthode info
data = {"janus":'handle_info', "admin_secret": janus_admin_secret, "transaction": transaction, "session_id": sessions_list[0], "handle_id": handles_list[0]}
websock.send(json.dumps(data))
rejson = websock.recv()
print rejson
{
"janus": "success",
"transaction": "73677159",
"session_id": 311091039069809,
"handle_id": 1721128026873430,
"info": {
"session_id": 311091039069809,
"session_last_activity": 1367674698,
"session_transport": "janus.transport.http",
"handle_id": 1721128026873430,
"opaque_id": "videoroomtest-L4YiOtywt1nm",
"created": 464048923,
"send_thread_created": true,
"current_time": 1368713443,
"plugin": "janus.plugin.videoroom",
"plugin_specific": {
"type": "publisher",
"room": 1234,
"id": 4565592288551424,
"private_id": 3477273478,
"display": "You",
"media": {
"audio": true,
"audio_codec": "opus",
"video": true,
"video_codec": "h264",
"data": false
},
"bitrate": 128000,
"audio-level-dBov": 0,
"talking": false,
"destroyed": 0
},
・ ・ ・
(réduction)
・ ・ ・
}
}
Je vais expliquer les informations ci-dessus. Puisque le plugin info est "janus.plugin.videoroom" Vous pouvez voir que cet utilisateur accède à la salle vidéo. De plus, les détails du plugin peuvent être trouvés dans plugin_specific. Vous pouvez voir que le numéro de chambre est "1234" et que le nom est "Vous". En outre, vous pouvez également obtenir des informations telles que le codec, le débit binaire et SDP.
Cette fois, j'ai expliqué l'utilisation de base de l'API Admin. Il existe de nombreuses autres méthodes dans l'API Admin. Veuillez consulter le site officiel. La prochaine fois, j'aimerais écrire un article sur l'API du plug-in.
C'était mon premier article sur Qiita. Veuillez signaler toute erreur.
Recommended Posts