agora-python-server-sdk 2.1.7__tar.gz → 2.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of agora-python-server-sdk might be problematic. Click here for more details.

Files changed (42) hide show
  1. {agora_python_server_sdk-2.1.7/agora_python_server_sdk.egg-info → agora_python_server_sdk-2.2.0}/PKG-INFO +14 -1
  2. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/README.md +13 -0
  3. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/__init__.py +14 -4
  4. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/_ctypes_handle/_ctypes_data.py +34 -5
  5. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/_ctypes_handle/_local_user_observer.py +9 -1
  6. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/agora_base.py +17 -0
  7. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/agora_service.py +4 -0
  8. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/local_user.py +18 -0
  9. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/local_user_observer.py +3 -0
  10. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0/agora_python_server_sdk.egg-info}/PKG-INFO +14 -1
  11. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/setup.py +9 -4
  12. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/MANIFEST.in +0 -0
  13. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/_ctypes_handle/_audio_frame_observer.py +0 -0
  14. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/_ctypes_handle/_rtc_connection_observer.py +0 -0
  15. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/_ctypes_handle/_video_encoded_frame_observer.py +0 -0
  16. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/_ctypes_handle/_video_frame_observer.py +0 -0
  17. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/_utils/globals.py +0 -0
  18. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/agora_parameter.py +0 -0
  19. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/audio_encoded_frame_sender.py +0 -0
  20. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/audio_frame_observer.py +0 -0
  21. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/audio_pcm_data_sender.py +0 -0
  22. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/audio_sessionctrl.py +0 -0
  23. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/audio_vad_manager.py +0 -0
  24. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/local_audio_track.py +0 -0
  25. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/local_video_track.py +0 -0
  26. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/media_node_factory.py +0 -0
  27. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/remote_audio_track.py +0 -0
  28. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/remote_video_track.py +0 -0
  29. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/rtc_connection.py +0 -0
  30. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/rtc_connection_observer.py +0 -0
  31. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/utils/audio_consumer.py +0 -0
  32. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/utils/vad_dump.py +0 -0
  33. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/video_encoded_frame_observer.py +0 -0
  34. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/video_encoded_image_sender.py +0 -0
  35. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/video_frame_observer.py +0 -0
  36. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/video_frame_sender.py +0 -0
  37. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora/rtc/voice_detection.py +0 -0
  38. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora_python_server_sdk.egg-info/SOURCES.txt +0 -0
  39. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora_python_server_sdk.egg-info/dependency_links.txt +0 -0
  40. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/agora_python_server_sdk.egg-info/top_level.txt +0 -0
  41. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/pyproject.toml +0 -0
  42. {agora_python_server_sdk-2.1.7 → agora_python_server_sdk-2.2.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: agora_python_server_sdk
3
- Version: 2.1.7
3
+ Version: 2.2.0
4
4
  Summary: A Python SDK for Agora Server
5
5
  Home-page: https://github.com/AgoraIO-Extensions/Agora-Python-Server-SDK
6
6
  Classifier: Intended Audience :: Developers
@@ -51,6 +51,19 @@ python agora_rtc/examples/example_audio_pcm_send.py --appId=xxx --channelId=xxx
51
51
 
52
52
  # Change log
53
53
 
54
+ 2025.01.08 Release 2.2.0
55
+ -- Updates:
56
+ - Update the SDK version from 4.4.30 to 4.4.31. Done.
57
+ -- FEAT:
58
+ - Add serviceconfigure.
59
+ - Add domain_limit. Done.
60
+ - Add should_callback_when_muted. Done.
61
+ - Add colorspacetype to ExternalVideoFrame to support the encoding of solid-color backgrounds in virtual human scenarios. Done.
62
+ -- FEAT:
63
+ - Add the AudioMetaData interface: localuser::send_audio_meta_data. Done.
64
+ - Add the OnAudioMetaDataReceived callback to localuserObserver::on_audio_meta_data_received. Done.
65
+ -- Sample modifications.
66
+
54
67
  2024.12.17 Release 2.1.7
55
68
  --Changes:
56
69
 
@@ -36,6 +36,19 @@ python agora_rtc/examples/example_audio_pcm_send.py --appId=xxx --channelId=xxx
36
36
 
37
37
  # Change log
38
38
 
39
+ 2025.01.08 Release 2.2.0
40
+ -- Updates:
41
+ - Update the SDK version from 4.4.30 to 4.4.31. Done.
42
+ -- FEAT:
43
+ - Add serviceconfigure.
44
+ - Add domain_limit. Done.
45
+ - Add should_callback_when_muted. Done.
46
+ - Add colorspacetype to ExternalVideoFrame to support the encoding of solid-color backgrounds in virtual human scenarios. Done.
47
+ -- FEAT:
48
+ - Add the AudioMetaData interface: localuser::send_audio_meta_data. Done.
49
+ - Add the OnAudioMetaDataReceived callback to localuserObserver::on_audio_meta_data_received. Done.
50
+ -- Sample modifications.
51
+
39
52
  2024.12.17 Release 2.1.7
40
53
  --Changes:
41
54
 
@@ -26,13 +26,23 @@ def _check_download_and_extract_sdk():
26
26
  sdk_dir = os.path.join(agora_service_path, "agora_sdk")
27
27
  zip_path = os.path.join(agora_service_path, "agora_rtc_sdk.zip")
28
28
 
29
- url = "https://download.agora.io/sdk/release/agora_rtc_sdk-x86_64-linux-gnu-v4.4.30-20241024_101940-398537.zip"
29
+ #url = "https://download.agora.io/sdk/release/agora_rtc_sdk-x86_64-linux-gnu-v4.4.30-20241024_101940-398537.zip"
30
+ # version 2.2.0 for linux
31
+ url = "https://download.agora.io/sdk/release/agora_rtc_sdk-x86_64-linux-gnu-v4.4.31-20241223_111509-491956.zip"
32
+
33
+
30
34
  libagora_rtc_sdk_path = os.path.join(sdk_dir, "libagora_rtc_sdk.so")
31
- rtc_md5 = "7031dd10d1681cd88fd89d68c5b54282"
35
+ #rtc_md5 = "7031dd10d1681cd88fd89d68c5b54282"
36
+ rtc_md5 = "f2a9e3ed15f872cb7e3b62d1528ac5cb"
32
37
  if sys.platform == 'darwin':
33
- url = "https://download.agora.io/sdk/release/agora_rtc_sdk_mac_rel.v4.4.30_22472_FULL_20241024_1224_398653.zip"
38
+ #url = "https://download.agora.io/sdk/release/agora_rtc_sdk_mac_rel.v4.4.30_22472_FULL_20241024_1224_398653.zip"
39
+ # version 2.2.0 for mac
40
+ url = "https://download.agora.io/sdk/release/agora_sdk_mac_v4.4.31_23136_FULL_20241223_1245_492039.zip"
41
+
34
42
  libagora_rtc_sdk_path = os.path.join(sdk_dir, "libAgoraRtcKit.dylib")
35
- rtc_md5 = "ca3ca14f9e2b7d97eb2594d1f32dab9f"
43
+ #rtc_md5 = "ca3ca14f9e2b7d97eb2594d1f32dab9f"
44
+ rtc_md5 = "6821cae218c8f31f8d720ac0c77edab0"
45
+
36
46
 
37
47
  if os.path.exists(libagora_rtc_sdk_path) and get_file_md5(libagora_rtc_sdk_path) == rtc_md5:
38
48
  return
@@ -718,6 +718,29 @@ class RemoteVideoTrackStatsInner(ctypes.Structure):
718
718
  stats.total_active_time,
719
719
  stats.publish_duration
720
720
  )
721
+
722
+ class ColorSpaceTypeInner(ctypes.Structure):
723
+ _fields_ = [
724
+ ("primaries_id", ctypes.c_int),
725
+ ("transfer_id", ctypes.c_int),
726
+ ("matrix_id", ctypes.c_int),
727
+ ("range_id", ctypes.c_int)
728
+ ]
729
+ def get(self):
730
+ return ColorSpaceType(
731
+ primaries_id=self.primaries_id,
732
+ transfer_id=self.transfer_id,
733
+ matrix_id=self.matrix_id,
734
+ range_id=self.range_id
735
+ )
736
+ @staticmethod
737
+ def create(colorspace:ColorSpaceType) -> 'ColorSpaceTypeInner':
738
+ return ColorSpaceTypeInner(
739
+ primaries_id=colorspace.primaries_id,
740
+ transfer_id=colorspace.transfer_id,
741
+ matrix_id=colorspace.matrix_id,
742
+ range_id=colorspace.range_id
743
+ )
721
744
 
722
745
 
723
746
  class ExternalVideoFrameInner(ctypes.Structure):
@@ -741,7 +764,8 @@ class ExternalVideoFrameInner(ctypes.Structure):
741
764
  ("metadata_size", ctypes.c_int),
742
765
  ("alpha_buffer", ctypes.c_void_p),
743
766
  ("fill_alpha_buffer", ctypes.c_uint8),
744
- ("alpha_mode", ctypes.c_int)
767
+ ("alpha_mode", ctypes.c_int),
768
+ ("color_space", ColorSpaceTypeInner)
745
769
  ]
746
770
 
747
771
  def get(self):
@@ -765,7 +789,8 @@ class ExternalVideoFrameInner(ctypes.Structure):
765
789
  metadata_size=self.metadata_size,
766
790
  alpha_buffer=self.alpha_buffer,
767
791
  fill_alpha_buffer=self.fill_alpha_buffer,
768
- alpha_mode=self.alpha_mode
792
+ alpha_mode=self.alpha_mode,
793
+ color_space=self.color_space.get()
769
794
  )
770
795
 
771
796
  @staticmethod
@@ -815,7 +840,8 @@ class ExternalVideoFrameInner(ctypes.Structure):
815
840
  c_metadata_size,
816
841
  c_alpha_buffer_ptr,
817
842
  frame.fill_alpha_buffer,
818
- frame.alpha_mode
843
+ frame.alpha_mode,
844
+ ColorSpaceTypeInner.create(frame.color_space)
819
845
  )
820
846
 
821
847
 
@@ -1105,6 +1131,7 @@ class AgoraServiceConfigInner(ctypes.Structure):
1105
1131
  ('audio_scenario', ctypes.c_int),
1106
1132
 
1107
1133
  ('use_string_uid', ctypes.c_int),
1134
+ ('domain_limit', ctypes.c_int),
1108
1135
  ]
1109
1136
 
1110
1137
  def get(self):
@@ -1117,7 +1144,8 @@ class AgoraServiceConfigInner(ctypes.Structure):
1117
1144
  area_code=self.area_code,
1118
1145
  channel_profile=self.channel_profile,
1119
1146
  audio_scenario=self.audio_scenario,
1120
- use_string_uid=self.use_string_uid
1147
+ use_string_uid=self.use_string_uid,
1148
+ domain_limit=self.domain_limit
1121
1149
  )
1122
1150
 
1123
1151
  @staticmethod
@@ -1131,7 +1159,8 @@ class AgoraServiceConfigInner(ctypes.Structure):
1131
1159
  config.area_code,
1132
1160
  config.channel_profile,
1133
1161
  config.audio_scenario,
1134
- config.use_string_uid
1162
+ config.use_string_uid,
1163
+ config.domain_limit
1135
1164
  )
1136
1165
 
1137
1166
 
@@ -44,6 +44,7 @@ ON_INTRA_REQUEST_RECEIVED_CALLBACK = ctypes.CFUNCTYPE(None, AGORA_HANDLE)
44
44
  ON_REMOTE_SUBSCRIBE_FALLBACK_TO_AUDIO_ONLY_CALLBACK = ctypes.CFUNCTYPE(None, AGORA_HANDLE, user_id_t, ctypes.c_int)
45
45
  ON_STREAM_MESSAGE_CALLBACK = ctypes.CFUNCTYPE(None, AGORA_HANDLE, user_id_t, ctypes.c_int, ctypes.c_char_p, ctypes.c_size_t)
46
46
  ON_USER_STATE_CHANGED_CALLBACK = ctypes.CFUNCTYPE(None, AGORA_HANDLE, user_id_t, ctypes.c_uint32)
47
+ ON_AUDIO_META_DATA_RECEIVED_CALLBACK = ctypes.CFUNCTYPE(None, AGORA_HANDLE, user_id_t, ctypes.c_char_p, ctypes.c_size_t)
47
48
 
48
49
 
49
50
  class RTCLocalUserObserverInner(ctypes.Structure):
@@ -85,7 +86,8 @@ class RTCLocalUserObserverInner(ctypes.Structure):
85
86
  ("on_intra_request_received", ON_INTRA_REQUEST_RECEIVED_CALLBACK),
86
87
  ("on_remote_subscribe_fallback_to_audio_only", ON_REMOTE_SUBSCRIBE_FALLBACK_TO_AUDIO_ONLY_CALLBACK),
87
88
  ("on_stream_message", ON_STREAM_MESSAGE_CALLBACK),
88
- ("on_user_state_changed", ON_USER_STATE_CHANGED_CALLBACK)
89
+ ("on_user_state_changed", ON_USER_STATE_CHANGED_CALLBACK),
90
+ ("on_audio_meta_data_received", ON_AUDIO_META_DATA_RECEIVED_CALLBACK)
89
91
  ]
90
92
 
91
93
  def __init__(self, local_user_observer: IRTCLocalUserObserver, local_user: 'LocalUser') -> None:
@@ -128,6 +130,7 @@ class RTCLocalUserObserverInner(ctypes.Structure):
128
130
  self.on_remote_subscribe_fallback_to_audio_only = ON_REMOTE_SUBSCRIBE_FALLBACK_TO_AUDIO_ONLY_CALLBACK(self._on_remote_subscribe_fallback_to_audio_only)
129
131
  self.on_stream_message = ON_STREAM_MESSAGE_CALLBACK(self._on_stream_message)
130
132
  self.on_user_state_changed = ON_USER_STATE_CHANGED_CALLBACK(self._on_user_state_changed)
133
+ self.on_audio_meta_data_received = ON_AUDIO_META_DATA_RECEIVED_CALLBACK(self._on_audio_meta_data_received)
131
134
 
132
135
  """
133
136
  it seems that this interface does not provide much value to the user's business,
@@ -348,3 +351,8 @@ class RTCLocalUserObserverInner(ctypes.Structure):
348
351
  logger.debug(f"LocalUserCB _on_user_state_changed: {local_user_handle}, {user_id}, {state}")
349
352
  user_id_str = user_id.decode('utf-8') if user_id else ""
350
353
  self.local_user_observer.on_user_state_changed(self.local_user, user_id_str, state)
354
+ def _on_audio_meta_data_received(self, local_user_handle, user_id, audio_meta_data, size):
355
+ user_id_str = user_id.decode('utf-8') if user_id else ""
356
+ bytes_from_c = bytearray(ctypes.string_at(audio_meta_data, size))
357
+
358
+ self.local_user_observer.on_audio_meta_data_received(self.local_user, user_id_str, bytes_from_c)
@@ -307,6 +307,15 @@ class AgoraServiceConfig:
307
307
  channel_profile: ChannelProfileType = ChannelProfileType.CHANNEL_PROFILE_LIVE_BROADCASTING
308
308
  audio_scenario: AudioScenarioType = AudioScenarioType.AUDIO_SCENARIO_CHORUS
309
309
  use_string_uid: int = 0
310
+ #version 2.2.0
311
+ # default to 0
312
+ domain_limit: int = 0
313
+ '''
314
+ // if >0, when remote user muted itself, the onplaybackbeforemixing will be still called badk with active pacakage
315
+ // if <=0, when remote user muted itself, the onplaybackbeforemixing will be no longer called back
316
+ // default to 0, i.e when muted, no callback will be triggered
317
+ '''
318
+ should_callbck_when_muted: int = 0
310
319
 
311
320
 
312
321
  @dataclass(kw_only=True)
@@ -423,6 +432,13 @@ class VideoEncoderConfiguration:
423
432
  mirror_mode: int = 0
424
433
  encode_alpha: int = 0
425
434
 
435
+ @dataclass(kw_only=True)
436
+ class ColorSpaceType:
437
+ primaries_id: int = 0
438
+ transfer_id: int = 0
439
+ matrix_id: int = 0
440
+ range_id: int = 0
441
+
426
442
 
427
443
  @dataclass(kw_only=True)
428
444
  class ExternalVideoFrame:
@@ -445,6 +461,7 @@ class ExternalVideoFrame:
445
461
  alpha_buffer: bytearray = None
446
462
  fill_alpha_buffer: int = 0
447
463
  alpha_mode: int = 0
464
+ color_space: ColorSpaceType = field(default_factory=ColorSpaceType)
448
465
 
449
466
 
450
467
  @dataclass(kw_only=True)
@@ -92,6 +92,10 @@ class AgoraService:
92
92
  # force audio vad v2 to be enabled
93
93
  agora_parameter.set_parameters("{\"che.audio.label.enable\": true}")
94
94
 
95
+ #versio 2.2.0 for callback when muted
96
+ if config.should_callbck_when_muted > 0:
97
+ agora_parameter.set_parameters("{\"rtc.audio.enable_user_silence_packet\": true}")
98
+
95
99
  if config.log_path:
96
100
  log_size = 512 * 1024
97
101
  if config.log_size > 0:
@@ -223,6 +223,15 @@ agora_local_user_set_audio_scenario = agora_lib.agora_local_user_set_audio_scena
223
223
  agora_local_user_set_audio_scenario.restype = AGORA_API_C_INT
224
224
  agora_local_user_set_audio_scenario.argtypes = [AGORA_HANDLE, ctypes.c_int]
225
225
 
226
+ #verison 2.2.0
227
+
228
+ #AGORA_API_C_INT agora_local_user_send_audio_meta_data(AGORA_HANDLE agora_local_user, const char* meta_data, size_t length);
229
+ agora_local_user_send_aduio_meta_data = agora_lib.agora_local_user_send_audio_meta_data
230
+ agora_local_user_send_aduio_meta_data.restype = AGORA_API_C_INT
231
+ agora_local_user_send_aduio_meta_data.argtypes = [AGORA_HANDLE, ctypes.c_char_p, ctypes.c_size_t]
232
+
233
+
234
+
226
235
 
227
236
  class LocalUser:
228
237
  def __init__(self, local_user_handle, connection):
@@ -594,3 +603,12 @@ class LocalUser:
594
603
  def set_audio_scenario(self, scenario_type: AudioScenarioType):
595
604
  ret = agora_local_user_set_audio_scenario(self.user_handle, scenario_type.value)
596
605
  return ret
606
+ # data can be str or bytes/bytearray object,is diff to send_sream_message which is a str object
607
+ def send_audio_meta_data(self, data):
608
+ # chang to ctypes.c_char_p
609
+ if isinstance(data, str):
610
+ data = data.encode('utf-8')
611
+ c_data = ctypes.create_string_buffer(bytes(data))
612
+ size = len(data)
613
+ ret = agora_local_user_send_aduio_meta_data(self.user_handle, c_data, ctypes.c_size_t(size))
614
+ return ret
@@ -117,3 +117,6 @@ class IRTCLocalUserObserver():
117
117
 
118
118
  def on_user_state_changed(self, agora_local_user, user_id, state):
119
119
  pass
120
+ # data is bytearray object, is diff to on_stream_msg which is str object
121
+ def on_audio_meta_data_received(self, agora_local_user, user_id, data):
122
+ pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: agora_python_server_sdk
3
- Version: 2.1.7
3
+ Version: 2.2.0
4
4
  Summary: A Python SDK for Agora Server
5
5
  Home-page: https://github.com/AgoraIO-Extensions/Agora-Python-Server-SDK
6
6
  Classifier: Intended Audience :: Developers
@@ -51,6 +51,19 @@ python agora_rtc/examples/example_audio_pcm_send.py --appId=xxx --channelId=xxx
51
51
 
52
52
  # Change log
53
53
 
54
+ 2025.01.08 Release 2.2.0
55
+ -- Updates:
56
+ - Update the SDK version from 4.4.30 to 4.4.31. Done.
57
+ -- FEAT:
58
+ - Add serviceconfigure.
59
+ - Add domain_limit. Done.
60
+ - Add should_callback_when_muted. Done.
61
+ - Add colorspacetype to ExternalVideoFrame to support the encoding of solid-color backgrounds in virtual human scenarios. Done.
62
+ -- FEAT:
63
+ - Add the AudioMetaData interface: localuser::send_audio_meta_data. Done.
64
+ - Add the OnAudioMetaDataReceived callback to localuserObserver::on_audio_meta_data_received. Done.
65
+ -- Sample modifications.
66
+
54
67
  2024.12.17 Release 2.1.7
55
68
  --Changes:
56
69
 
@@ -20,10 +20,15 @@ class CustomInstallCommand(install):
20
20
  agora_service_path = os.path.join(site.getsitepackages()[0], 'agora', 'rtc')
21
21
  sdk_dir = os.path.join(agora_service_path, "agora_sdk")
22
22
  zip_path = os.path.join(agora_service_path, "agora_rtc_sdk.zip")
23
-
24
- url = "https://download.agora.io/sdk/release/agora_rtc_sdk-x86_64-linux-gnu-v4.4.30-20241024_101940-398537.zip"
23
+ '''# version before 2.2.0
24
+ #url = "https://download.agora.io/sdk/release/agora_rtc_sdk-x86_64-linux-gnu-v4.4.30-20241024_101940-398537.zip"
25
+ #url = "https://download.agora.io/sdk/release/agora_rtc_sdk_mac_rel.v4.4.30_22472_FULL_20241024_1224_398653.zip"
26
+ '''
27
+ # verison 2.2.0
28
+ url = "https://download.agora.io/sdk/release/agora_rtc_sdk-x86_64-linux-gnu-v4.4.31-20241223_111509-491956.zip"
25
29
  if sys.platform == 'darwin':
26
- url = "https://download.agora.io/sdk/release/agora_rtc_sdk_mac_rel.v4.4.30_22472_FULL_20241024_1224_398653.zip"
30
+ url = "https://download.agora.io/sdk/release/agora_sdk_mac_v4.4.31_23136_FULL_20241223_1245_492039.zip"
31
+
27
32
 
28
33
  if os.path.exists(sdk_dir):
29
34
  os.system(f"rm -rf {sdk_dir}")
@@ -45,7 +50,7 @@ class CustomInstallCommand(install):
45
50
 
46
51
  setup(
47
52
  name='agora_python_server_sdk',
48
- version='2.1.7',
53
+ version='2.2.0',
49
54
  description='A Python SDK for Agora Server',
50
55
  long_description=open('README.md').read(),
51
56
  long_description_content_type='text/markdown',