examples
skyway_for_ros_examples
scripts
utils
media.py
Go to the documentation of this file.
1
import
json
2
import
socketserver
3
4
5
def
find_free_port
():
6
with
socketserver.TCPServer((
"localhost"
, 0),
None
)
as
s:
7
return
s.server_address[1]
8
9
10
def
create_call_query
(peer_id, token, target_id):
11
video_port =
find_free_port
()
12
video_rtcp_port =
find_free_port
()
13
audio_port =
find_free_port
()
14
audio_rtcp_port =
find_free_port
()
15
16
answer_query = (
17
"{"
18
' "request_type":"MEDIA",'
19
' "command":"CALL",'
20
' "params":{'
21
f
' "peer_id":"{peer_id}",'
22
f
' "token":"{token}",'
23
f
' "target_id":"{target_id}",'
24
' "constraints":{'
25
' "video_params":{'
26
' "band_width":1500,'
27
' "codec":"H264",'
28
' "payload_type":96,'
# ここで指定するpayload_typeはgStreamerで指定するものと一致させること。番号はRFCに沿っていれば何番でもよい
29
' "sampling_rate":90000'
30
" },"
31
' "audio_params":{'
32
' "band_width":1500,'
33
' "codec":"OPUS",'
34
' "payload_type":111,'
# ここで指定するpayload_typeはgStreamerで指定するものと一致させること。番号はRFCに沿っていれば何番でもよい
35
' "sampling_rate":48000'
36
" }"
37
" },"
38
' "redirect_params":{'
39
' "video":{'
40
' "ip_v4":"127.0.0.1",'
41
f
' "port":{video_port}'
42
" },"
43
' "video_rtcp":{'
44
' "ip_v4":"127.0.0.1",'
45
f
' "port":{video_rtcp_port}'
46
" },"
47
' "audio":{'
48
' "ip_v4":"127.0.0.1",'
49
f
' "port":{audio_port}'
50
" },"
51
' "audio_rtcp":{'
52
' "ip_v4":"127.0.0.1",'
53
f
' "port":{audio_rtcp_port}'
54
" }"
55
" }"
56
" }"
57
"}"
58
)
59
return
answer_query
60
61
62
def
create_answer_query
(media_connection_id):
63
video_port =
find_free_port
()
64
video_rtcp_port =
find_free_port
()
65
audio_port =
find_free_port
()
66
audio_rtcp_port =
find_free_port
()
67
68
answer_query = (
69
"{"
70
' "request_type":"MEDIA",'
71
' "command":"ANSWER",'
72
' "params":{'
73
f
' "media_connection_id":"{media_connection_id}",'
74
' "answer_query":{'
75
' "constraints":{'
76
' "video_params":{'
77
' "band_width":1500,'
78
' "codec":"H264",'
79
' "payload_type":96,'
# ここで指定するpayload_typeはgStreamerで指定するものと一致させること。番号はRFCに沿っていれば何番でもよい
80
' "sampling_rate":90000'
81
" },"
82
' "audio_params":{'
83
' "band_width":1500,'
84
' "codec":"OPUS",'
85
' "payload_type":111,'
# ここで指定するpayload_typeはgStreamerで指定するものと一致させること。番号はRFCに沿っていれば何番でもよい
86
' "sampling_rate":48000'
87
" }"
88
" },"
89
' "redirect_params":{'
90
' "video":{'
91
' "ip_v4":"127.0.0.1",'
92
f
' "port":{video_port}'
93
" },"
94
' "video_rtcp":{'
95
' "ip_v4":"127.0.0.1",'
96
f
' "port":{video_rtcp_port}'
97
" },"
98
' "audio":{'
99
' "ip_v4":"127.0.0.1",'
100
f
' "port":{audio_port}'
101
" },"
102
' "audio_rtcp":{'
103
' "ip_v4":"127.0.0.1",'
104
f
' "port":{audio_rtcp_port}'
105
" }"
106
" }"
107
" }"
108
" }"
109
"}"
110
)
111
return
answer_query
112
113
114
def
create_media_status_request
(media_connection_id):
115
return
(
116
"{"
117
' "request_type":"MEDIA",'
118
' "command":"STATUS",'
119
' "params":{'
120
f
' "media_connection_id":"{media_connection_id}"'
121
" }"
122
"}"
123
)
124
125
126
def
parse_media_info
(object):
127
return
(
128
# RTPの送信先IPアドレス
129
object[
"ip_v4"
],
130
# RTPの送信先ポート
131
object[
"port"
],
132
# RTCPの送信先IPアドレス
133
object[
"ip_v4"
],
134
# RTCPの送信先ポート
135
object[
"port"
],
136
)
utils.media.parse_media_info
def parse_media_info(object)
Definition:
media.py:126
utils.media.create_answer_query
def create_answer_query(media_connection_id)
Definition:
media.py:62
utils.media.create_call_query
def create_call_query(peer_id, token, target_id)
Definition:
media.py:10
utils.media.create_media_status_request
def create_media_status_request(media_connection_id)
Definition:
media.py:114
utils.media.find_free_port
def find_free_port()
Definition:
media.py:5
skyway
Author(s): Toshiya Nakakura
autogenerated on Thu Oct 26 2023 02:42:21