media.py
Go to the documentation of this file.
1 import json
2 import socketserver
3 
4 
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  )
def create_call_query(peer_id, token, target_id)
Definition: media.py:10
def create_answer_query(media_connection_id)
Definition: media.py:62
def parse_media_info(object)
Definition: media.py:126
def create_media_status_request(media_connection_id)
Definition: media.py:114
def find_free_port()
Definition: media.py:5


skyway
Author(s): Toshiya Nakakura
autogenerated on Sat Apr 15 2023 02:08:21