Es gibt viele Artikel über den WebRTC-Medienserver namens Janus Gateway. Es gibt fast keine inoffizielle Verwendung der bereitgestellten API. Es fiel mir schwer, das herauszufinden, deshalb möchte ich es hier zusammenfassen.
Es gibt zwei Haupttypen von APIs, die von Janus bereitgestellt werden.
Eine API zum Verwalten und Überwachen von Janus. Ich werde es in diesem Artikel verwenden.
Janus hat eine Reihe von Plugins für Videoanrufe, Streaming, SIP und mehr. Es ist eine API zum Bedienen des Plug-Ins. Ich werde es im nächsten Artikel verwenden.
Legen Sie das Kennwort fest, das beim Aufrufen der Admin-API verwendet werden soll.
/usr/local/etc/janus/janus.cfg
[general]
admin_secret = password
Stellen Sie ein, dass es über Websocket verfügbar ist. Dieses Mal setzen wir ws, aber wenn eine Verschlüsselung erforderlich ist, setzen wir wss und bereiten das Zertifikat vor. Stellen Sie außerdem sicher, dass der hier angegebene Port nicht von FW oder Ähnlichem blockiert wird.
/usr/local/etc/janus/janus.transport.websockets.cfg
[admin]
admin_ws = yes
admin_ws_port = 7188
Die Python-Version ist 2.7. Dieses Mal werde ich die Informationen der Benutzer überwachen, die auf Janus zugegriffen haben.
Rufen Sie zunächst die Liste der Sitzungen ab, auf die Sie zugreifen.
python
import websocket
import json
import random
import string
#Janus Endpunkt
janus_admin_url = 'ws://10.0.0.1:7188/janus'
#Administratorkennwort
janus_admin_secret = 'password'
#Zufällige Zeichengenerierung
def random_string(length, seq=string.digits):
sr = random.SystemRandom()
return ''.join([sr.choice(seq) for i in range(length)])
#8 zufällige Zeichen
transaction = random_string(8)
# list_Erstellen Sie einen Json, um die Sitzungsmethode aufzurufen
data = {"janus":'list_sessions', "admin_secret": janus_admin_secret, "transaction": transaction}
#Erstellen Sie eine Websocket-Verbindung
websock = websocket.create_connection(janus_admin_url,subprotocols=["janus-admin-protocol"])
#Senden
websock.send(json.dumps(data))
#Erhalten
rejson = websock.recv()
#Empfangsergebnis anzeigen
print rejson
{
"janus": "success",
"transaction": "73677159",
"sessions": [
311091039069809
]
}
Rufen Sie dann die Liste ab, die von der Sitzung verarbeitet wird. Es werden mehrere Handles zurückgegeben, beispielsweise wenn mehrere Plug-Ins verwendet werden.
python
sessions_list = json.loads(rejson).get('sessions',[])
# list_Erstellen Sie einen Json, der die Handles-Methode aufruft
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
]
}
Schließlich erhalten Sie die Informationen für dieses Handle.
python
handles_list = json.loads(rejson).get('handles',[])
# handle_Erstellen Sie einen Json, um die Info-Methode aufzurufen
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
},
・ ・ ・
(Kürzung)
・ ・ ・
}
}
Ich werde die obigen Informationen erklären. Da das Info-Plugin "janus.plugin.videoroom" ist Sie können sehen, dass dieser Benutzer auf den Videoraum zugreift. Die Details zum Plugin finden Sie auch in plugin_specific. Sie können sehen, dass die Zimmernummer "1234" und der Name "Sie" ist. Darüber hinaus können Sie auch Informationen wie Codec, Bitrate und SDP abrufen.
Dieses Mal erklärte ich die grundlegende Verwendung der Admin-API. Es gibt viele andere Methoden in der Admin-API. Bitte überprüfen Sie die offizielle Website. Nächstes Mal möchte ich einen Artikel über die Plug-In-API schreiben.
Dies war mein erster Qiita-Artikel. Bitte weisen Sie auf Fehler hin.
Recommended Posts