sora-sdk 2025.2.3__tar.gz → 2025.3.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 sora-sdk might be problematic. Click here for more details.
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/MANIFEST.in +1 -0
- {sora_sdk-2025.2.3/src/sora_sdk.egg-info → sora_sdk-2025.3.0}/PKG-INFO +8 -13
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/README.md +7 -12
- sora_sdk-2025.3.0/VERSION +1 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/pyproject.toml +5 -7
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/run.py +14 -15
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/setup.py +16 -3
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/src/sora_sdk/__init__.py +19 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/src/sora_sdk/sora_sdk_ext.cpython-311-darwin.so +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/src/sora_sdk/sora_sdk_ext.pyi +7 -1
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0/src/sora_sdk.egg-info}/PKG-INFO +8 -13
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/src/sora_sdk.egg-info/SOURCES.txt +3 -1
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_amd_amf.py +6 -26
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_apple_video_toolbox.py +17 -62
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_authz.py +15 -51
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_authz_simulcast.py +21 -70
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_ca_cert.py +4 -22
- sora_sdk-2025.3.0/tests/test_capability.py +52 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_degradation_preference.py +8 -41
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_encoded_transform.py +46 -33
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_intel_vpl.py +18 -73
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_messaging.py +3 -15
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_messaging_header.py +3 -15
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_nvidia_video_codec_sdk.py +9 -39
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_openh264.py +51 -25
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_openh264_simulcast.py +33 -69
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_opus.py +2 -12
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_re_offer_re_answer_sdp.py +5 -22
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_sendonly_recvonly.py +6 -28
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_signaling.py +4 -22
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_signaling_message.py +8 -34
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_signaling_notify.py +3 -16
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_simulcast.py +2 -11
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_sora_disconnect.py +36 -108
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_type_disconnect.py +8 -32
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_type_switched.py +9 -41
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/tests/test_vad.py +27 -19
- sora_sdk-2025.3.0/tests/test_version.py +17 -0
- sora_sdk-2025.2.3/tests/test_capability.py +0 -94
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/LICENSE +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/buildbase.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/pypath.py +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/setup.cfg +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/src/sora_sdk/py.typed +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/src/sora_sdk.egg-info/dependency_links.txt +0 -0
- {sora_sdk-2025.2.3 → sora_sdk-2025.3.0}/src/sora_sdk.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sora_sdk
|
|
3
|
-
Version: 2025.
|
|
3
|
+
Version: 2025.3.0
|
|
4
4
|
Summary: WebRTC SFU Sora Python SDK
|
|
5
5
|
Home-page: https://github.com/shiguredo/sora-python-sdk
|
|
6
6
|
Author-email: "Shiguredo Inc." <contact+pypi@shiguredo.jp>
|
|
@@ -93,20 +93,12 @@ Please read <https://github.com/shiguredo/oss/blob/master/README.en.md> before u
|
|
|
93
93
|
|
|
94
94
|
## sora_sdk パッケージの追加
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
[uv](https://docs.astral.sh/uv/)
|
|
96
|
+
[uv](https://docs.astral.sh/uv/) の利用を推奨します。
|
|
99
97
|
|
|
100
98
|
```bash
|
|
101
99
|
uv add sora_sdk
|
|
102
100
|
```
|
|
103
101
|
|
|
104
|
-
### pip
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
pip install sora_sdk
|
|
108
|
-
```
|
|
109
|
-
|
|
110
102
|
### NVIDIA Jetson 向けパッケージ
|
|
111
103
|
|
|
112
104
|
PyPI 経由ではインストールできません。
|
|
@@ -128,13 +120,17 @@ PyPI 経由ではインストールできません。
|
|
|
128
120
|
- Ubuntu 24.04 LTS x86_64
|
|
129
121
|
- Ubuntu 24.04 LTS arm64
|
|
130
122
|
- Ubuntu 22.04 LTS x86_64
|
|
131
|
-
- Ubuntu 22.04 LTS arm64
|
|
132
|
-
- PyPI からではなくパッケージファイルを利用してください
|
|
123
|
+
- Ubuntu 22.04 LTS arm64
|
|
133
124
|
- macOS Sequoia 15 arm64
|
|
134
125
|
- macOS Ventura 14 arm64
|
|
135
126
|
- Windows 11 x86_64
|
|
136
127
|
- Windows Server 2025 x86_64
|
|
137
128
|
|
|
129
|
+
### Jetson 向け
|
|
130
|
+
|
|
131
|
+
- Ubuntu 22.04 LTS arm64 (NVIDIA Jetson JetPack SDK 6)
|
|
132
|
+
- PyPI からではなくパッケージファイルを利用してください
|
|
133
|
+
|
|
138
134
|
### macOS の対応バージョン
|
|
139
135
|
|
|
140
136
|
直近の 2 バージョンをサポートします。
|
|
@@ -157,7 +153,6 @@ PyPI 経由ではインストールできません。
|
|
|
157
153
|
### 優先実装が可能な機能一覧
|
|
158
154
|
|
|
159
155
|
- Windows 11 arm64
|
|
160
|
-
- Ubuntu 22.04 arm64
|
|
161
156
|
- Ubuntu 22.04 arm64 (NVIDIA Jetson JetPack SDK 6.1)
|
|
162
157
|
- Ubuntu 20.04 arm64 (NVIDIA Jetson JetPack SDK 5)
|
|
163
158
|
|
|
@@ -73,20 +73,12 @@ Please read <https://github.com/shiguredo/oss/blob/master/README.en.md> before u
|
|
|
73
73
|
|
|
74
74
|
## sora_sdk パッケージの追加
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
[uv](https://docs.astral.sh/uv/)
|
|
76
|
+
[uv](https://docs.astral.sh/uv/) の利用を推奨します。
|
|
79
77
|
|
|
80
78
|
```bash
|
|
81
79
|
uv add sora_sdk
|
|
82
80
|
```
|
|
83
81
|
|
|
84
|
-
### pip
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
pip install sora_sdk
|
|
88
|
-
```
|
|
89
|
-
|
|
90
82
|
### NVIDIA Jetson 向けパッケージ
|
|
91
83
|
|
|
92
84
|
PyPI 経由ではインストールできません。
|
|
@@ -108,13 +100,17 @@ PyPI 経由ではインストールできません。
|
|
|
108
100
|
- Ubuntu 24.04 LTS x86_64
|
|
109
101
|
- Ubuntu 24.04 LTS arm64
|
|
110
102
|
- Ubuntu 22.04 LTS x86_64
|
|
111
|
-
- Ubuntu 22.04 LTS arm64
|
|
112
|
-
- PyPI からではなくパッケージファイルを利用してください
|
|
103
|
+
- Ubuntu 22.04 LTS arm64
|
|
113
104
|
- macOS Sequoia 15 arm64
|
|
114
105
|
- macOS Ventura 14 arm64
|
|
115
106
|
- Windows 11 x86_64
|
|
116
107
|
- Windows Server 2025 x86_64
|
|
117
108
|
|
|
109
|
+
### Jetson 向け
|
|
110
|
+
|
|
111
|
+
- Ubuntu 22.04 LTS arm64 (NVIDIA Jetson JetPack SDK 6)
|
|
112
|
+
- PyPI からではなくパッケージファイルを利用してください
|
|
113
|
+
|
|
118
114
|
### macOS の対応バージョン
|
|
119
115
|
|
|
120
116
|
直近の 2 バージョンをサポートします。
|
|
@@ -137,7 +133,6 @@ PyPI 経由ではインストールできません。
|
|
|
137
133
|
### 優先実装が可能な機能一覧
|
|
138
134
|
|
|
139
135
|
- Windows 11 arm64
|
|
140
|
-
- Ubuntu 22.04 arm64
|
|
141
136
|
- Ubuntu 22.04 arm64 (NVIDIA Jetson JetPack SDK 6.1)
|
|
142
137
|
- Ubuntu 20.04 arm64 (NVIDIA Jetson JetPack SDK 5)
|
|
143
138
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2025.3.0
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sora_sdk"
|
|
3
3
|
authors = [{ name = "Shiguredo Inc.", email = "contact+pypi@shiguredo.jp" }]
|
|
4
|
-
|
|
4
|
+
dynamic = ["version"]
|
|
5
5
|
description = "WebRTC SFU Sora Python SDK"
|
|
6
6
|
readme = "README.md"
|
|
7
7
|
license = "Apache-2.0"
|
|
@@ -20,26 +20,24 @@ Documentation = "https://sora-python-sdk.shiguredo.jp"
|
|
|
20
20
|
Discord = "https://discord.gg/shiguredo"
|
|
21
21
|
|
|
22
22
|
[build-system]
|
|
23
|
-
requires = ["setuptools==80.
|
|
23
|
+
requires = ["setuptools==80.9", "wheel==0.45.1"]
|
|
24
24
|
build-backend = "setuptools.build_meta"
|
|
25
25
|
|
|
26
26
|
[tool.uv]
|
|
27
27
|
python-preference = "only-managed"
|
|
28
28
|
dev-dependencies = [
|
|
29
29
|
"nanobind==2.7.0",
|
|
30
|
-
"setuptools==80.
|
|
30
|
+
"setuptools==80.9",
|
|
31
31
|
"build==1.2.2.post1",
|
|
32
32
|
"wheel==0.45.1",
|
|
33
|
-
"typing-extensions",
|
|
34
|
-
"python-dotenv",
|
|
35
33
|
"numpy",
|
|
36
34
|
"httpx",
|
|
37
35
|
"pytest",
|
|
38
36
|
"ruff",
|
|
39
|
-
"mypy",
|
|
40
37
|
"pyjwt",
|
|
41
38
|
"pytest-repeat",
|
|
42
|
-
"
|
|
39
|
+
"ty",
|
|
40
|
+
"pydantic-settings",
|
|
43
41
|
]
|
|
44
42
|
|
|
45
43
|
[tool.ruff]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import hashlib
|
|
3
|
+
import importlib.metadata
|
|
3
4
|
import multiprocessing
|
|
4
5
|
import os
|
|
5
6
|
import shlex
|
|
@@ -30,7 +31,7 @@ from buildbase import (
|
|
|
30
31
|
mkdir_p,
|
|
31
32
|
read_version_file,
|
|
32
33
|
)
|
|
33
|
-
from pypath import get_python_include_dir,
|
|
34
|
+
from pypath import get_python_include_dir, get_python_version
|
|
34
35
|
|
|
35
36
|
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
|
|
36
37
|
|
|
@@ -46,7 +47,7 @@ def install_deps(
|
|
|
46
47
|
local_sora_cpp_sdk_dir: Optional[str],
|
|
47
48
|
local_sora_cpp_sdk_args: List[str],
|
|
48
49
|
):
|
|
49
|
-
version = read_version_file("
|
|
50
|
+
version = read_version_file("DEPS")
|
|
50
51
|
|
|
51
52
|
# multistrap を使った sysroot の構築
|
|
52
53
|
if (
|
|
@@ -173,6 +174,7 @@ AVAILABLE_TARGETS = [
|
|
|
173
174
|
"macos_arm64",
|
|
174
175
|
"ubuntu-22.04_x86_64",
|
|
175
176
|
"ubuntu-24.04_x86_64",
|
|
177
|
+
"ubuntu-22.04_armv8",
|
|
176
178
|
"ubuntu-24.04_armv8",
|
|
177
179
|
"ubuntu-22.04_armv8_jetson",
|
|
178
180
|
]
|
|
@@ -199,6 +201,8 @@ def main():
|
|
|
199
201
|
platform = Platform("ubuntu", "22.04", "x86_64")
|
|
200
202
|
elif args.target == "ubuntu-24.04_x86_64":
|
|
201
203
|
platform = Platform("ubuntu", "24.04", "x86_64")
|
|
204
|
+
elif args.target == "ubuntu-22.04_armv8":
|
|
205
|
+
platform = Platform("ubuntu", "22.04", "armv8")
|
|
202
206
|
elif args.target == "ubuntu-24.04_armv8":
|
|
203
207
|
platform = Platform("ubuntu", "24.04", "armv8")
|
|
204
208
|
elif args.target == "ubuntu-22.04_armv8_jetson":
|
|
@@ -244,19 +248,15 @@ def main():
|
|
|
244
248
|
cmake_args = []
|
|
245
249
|
cmake_args.append(f"-DCMAKE_BUILD_TYPE={configuration}")
|
|
246
250
|
cmake_args.append(f"-DTARGET_OS={platform.target.os}")
|
|
251
|
+
cmake_args.append(f"-DSORA_PYTHON_SDK_VERSION={importlib.metadata.version('sora-sdk')}")
|
|
247
252
|
cmake_args.append(f"-DBOOST_ROOT={cmake_path(sora_info.boost_install_dir)}")
|
|
248
253
|
cmake_args.append(f"-DWEBRTC_INCLUDE_DIR={cmake_path(webrtc_info.webrtc_include_dir)}")
|
|
249
254
|
cmake_args.append(f"-DWEBRTC_LIBRARY_DIR={cmake_path(webrtc_info.webrtc_library_dir)}")
|
|
250
255
|
cmake_args.append(f"-DSORA_DIR={cmake_path(sora_info.sora_install_dir)}")
|
|
251
256
|
cmake_args.append(f"-DOPENH264_DIR={cmake_path(os.path.join(install_dir, 'openh264'))}")
|
|
252
257
|
python_version = get_python_version()
|
|
253
|
-
cmake_args.append(f"-
|
|
254
|
-
cmake_args.append(f"-
|
|
255
|
-
cmake_args.append(f"-DPYTHON_EXECUTABLE={cmake_path(sys.executable)}")
|
|
256
|
-
python_library = get_python_library(python_version)
|
|
257
|
-
if python_library is None:
|
|
258
|
-
raise Exception("Failed to get Python library")
|
|
259
|
-
cmake_args.append(f"-DPYTHON_LIBRARY={cmake_path(python_library)}")
|
|
258
|
+
cmake_args.append(f"-DPython_INCLUDE_DIR={get_python_include_dir(python_version)}")
|
|
259
|
+
cmake_args.append(f"-DPython_EXECUTABLE={cmake_path(sys.executable)}")
|
|
260
260
|
|
|
261
261
|
if platform.target.os == "ubuntu":
|
|
262
262
|
# クロスコンパイルの設定。
|
|
@@ -265,8 +265,8 @@ def main():
|
|
|
265
265
|
if platform.build.arch == "armv8":
|
|
266
266
|
# ビルド環境が armv8 の場合は libwebrtc のバイナリが使えないのでローカルの clang を利用する
|
|
267
267
|
cmake_args += [
|
|
268
|
-
"-DCMAKE_C_COMPILER=clang-
|
|
269
|
-
"-DCMAKE_CXX_COMPILER=clang++-
|
|
268
|
+
"-DCMAKE_C_COMPILER=clang-19",
|
|
269
|
+
"-DCMAKE_CXX_COMPILER=clang++-19",
|
|
270
270
|
]
|
|
271
271
|
else:
|
|
272
272
|
cmake_args += [
|
|
@@ -280,7 +280,8 @@ def main():
|
|
|
280
280
|
|
|
281
281
|
if platform.build.arch != platform.target.arch:
|
|
282
282
|
sysroot = os.path.join(install_dir, "rootfs")
|
|
283
|
-
|
|
283
|
+
python_version = get_python_version()
|
|
284
|
+
python_version_short = ".".join(python_version.split(".")[:2])
|
|
284
285
|
cmake_args += [
|
|
285
286
|
"-DCMAKE_SYSTEM_NAME=Linux",
|
|
286
287
|
"-DCMAKE_SYSTEM_PROCESSOR=aarch64",
|
|
@@ -291,10 +292,8 @@ def main():
|
|
|
291
292
|
"-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH",
|
|
292
293
|
"-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH",
|
|
293
294
|
"-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=BOTH",
|
|
294
|
-
f"-DPython_ROOT_DIR={cmake_path(os.path.join(sysroot, 'usr', 'include', 'python3.12'))}",
|
|
295
295
|
f"-DCMAKE_SYSROOT={sysroot}",
|
|
296
|
-
f"-
|
|
297
|
-
"-DNB_SUFFIX=.cpython-312-aarch64-linux-gnu.so",
|
|
296
|
+
f"-DNB_SUFFIX=.cpython-{python_version_short.replace('.', '')}-aarch64-linux-gnu.so",
|
|
298
297
|
]
|
|
299
298
|
elif platform.target.os == "macos":
|
|
300
299
|
sysroot = cmdcap(["xcrun", "--sdk", "macosx", "--show-sdk-path"])
|
|
@@ -13,16 +13,26 @@ from buildbase import PlatformTarget, cd, get_build_platform # noqa: E402
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def run_setup(build_platform, target_platform):
|
|
16
|
+
with open(os.path.join(BASE_DIR, "VERSION"), "r") as f:
|
|
17
|
+
version = f.read().strip()
|
|
18
|
+
|
|
19
|
+
build_profile = os.getenv("BUILD_PROFILE")
|
|
20
|
+
if build_profile == "debug":
|
|
21
|
+
version += "+debug"
|
|
22
|
+
|
|
16
23
|
plat = None
|
|
17
24
|
if target_platform.os == "jetson":
|
|
18
25
|
plat = "manylinux_2_17_aarch64.manylinux2014_aarch64"
|
|
19
26
|
elif target_platform.os == "ubuntu" and target_platform.arch == "armv8":
|
|
20
|
-
|
|
27
|
+
if target_platform.osver == "22.04":
|
|
28
|
+
plat = "manylinux_2_31_aarch64"
|
|
29
|
+
if target_platform.osver == "24.04":
|
|
30
|
+
plat = "manylinux_2_35_aarch64"
|
|
21
31
|
elif target_platform.os == "ubuntu" and target_platform.arch == "x86_64":
|
|
22
32
|
if target_platform.osver == "22.04":
|
|
23
|
-
plat = "
|
|
33
|
+
plat = "manylinux_2_31_x86_64"
|
|
24
34
|
if target_platform.osver == "24.04":
|
|
25
|
-
plat = "
|
|
35
|
+
plat = "manylinux_2_35_x86_64"
|
|
26
36
|
|
|
27
37
|
class bdist_wheel(_bdist_wheel):
|
|
28
38
|
def finalize_options(self):
|
|
@@ -35,6 +45,7 @@ def run_setup(build_platform, target_platform):
|
|
|
35
45
|
return impl, impl, plat if plat is not None else plat2
|
|
36
46
|
|
|
37
47
|
setup(
|
|
48
|
+
version=version,
|
|
38
49
|
url="https://github.com/shiguredo/sora-python-sdk",
|
|
39
50
|
packages=["sora_sdk"],
|
|
40
51
|
package_dir={"": "src"},
|
|
@@ -54,6 +65,8 @@ def main():
|
|
|
54
65
|
target = os.getenv("SORA_SDK_TARGET")
|
|
55
66
|
if target is None:
|
|
56
67
|
target_platform = build_platform
|
|
68
|
+
elif target == "ubuntu-22.04_armv8":
|
|
69
|
+
target_platform = PlatformTarget("ubuntu", "22.04", "armv8")
|
|
57
70
|
elif target == "ubuntu-24.04_armv8":
|
|
58
71
|
target_platform = PlatformTarget("ubuntu", "24.04", "armv8")
|
|
59
72
|
elif target == "ubuntu-22.04_armv8_jetson":
|
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
from .sora_sdk_ext import * # noqa: F401,F403
|
|
2
2
|
|
|
3
|
+
# インストールされたパッケージの場合は importlib.metadata から取得
|
|
4
|
+
# 開発環境の場合は VERSION ファイルから取得
|
|
5
|
+
try:
|
|
6
|
+
from importlib.metadata import version, PackageNotFoundError
|
|
7
|
+
try:
|
|
8
|
+
__version__ = version("sora_sdk")
|
|
9
|
+
except PackageNotFoundError:
|
|
10
|
+
# パッケージがインストールされていない場合(開発環境)
|
|
11
|
+
import os
|
|
12
|
+
_version_file = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "VERSION")
|
|
13
|
+
if os.path.exists(_version_file):
|
|
14
|
+
with open(_version_file, "r") as f:
|
|
15
|
+
__version__ = f.read().strip()
|
|
16
|
+
else:
|
|
17
|
+
__version__ = "unknown"
|
|
18
|
+
except ImportError:
|
|
19
|
+
# Python 3.8 以前の互換性のため
|
|
20
|
+
__version__ = "unknown"
|
|
21
|
+
|
|
3
22
|
"""
|
|
4
23
|
sink はそれぞれ track が必要で参照を保持する必要がある
|
|
5
24
|
しかしながら、 sink の C++ 側で shared_ptr として track を持つと、
|
|
Binary file
|
|
@@ -226,6 +226,12 @@ class SoraConnection:
|
|
|
226
226
|
@on_message.setter
|
|
227
227
|
def on_message(self, arg: Callable[[str, bytes], None], /) -> None: ...
|
|
228
228
|
|
|
229
|
+
@property
|
|
230
|
+
def on_rpc(self) -> Callable[[bytes], None]: ...
|
|
231
|
+
|
|
232
|
+
@on_rpc.setter
|
|
233
|
+
def on_rpc(self, arg: Callable[[bytes], None], /) -> None: ...
|
|
234
|
+
|
|
229
235
|
@property
|
|
230
236
|
def on_switched(self) -> Callable[[str], None]: ...
|
|
231
237
|
|
|
@@ -485,7 +491,7 @@ def create_video_codec_preference_from_implementation(arg0: SoraVideoCodecCapabi
|
|
|
485
491
|
class Sora:
|
|
486
492
|
def __init__(self, openh264: str | None = None, video_codec_preference: SoraVideoCodecPreference | None = None) -> None: ...
|
|
487
493
|
|
|
488
|
-
def create_connection(self, signaling_urls: list[str], role: str, channel_id: str, client_id: Optional[str] = None, bundle_id: Optional[str] = None, metadata: Optional[dict] = None, signaling_notify_metadata: Optional[dict] = None, audio_source: Optional[SoraTrackInterface] = None, video_source: Optional[SoraTrackInterface] = None, audio_frame_transformer: Optional[SoraAudioFrameTransformer] = None, video_frame_transformer: Optional[SoraVideoFrameTransformer] = None, audio: Optional[bool] = None, video: Optional[bool] = None, audio_codec_type: Optional[str] = None, video_codec_type: Optional[str] = None, video_bit_rate: Optional[int] = None, audio_bit_rate: Optional[int] = None, video_vp9_params: Optional[dict] = None, video_av1_params: Optional[dict] = None, video_h264_params: Optional[dict] = None, audio_opus_params: Optional[dict] = None, simulcast: Optional[bool] = None, spotlight: Optional[bool] = None, spotlight_number: Optional[int] = None, simulcast_rid: Optional[str] = None, spotlight_focus_rid: Optional[str] = None, spotlight_unfocus_rid: Optional[str] = None, forwarding_filter: Optional[dict] = None, forwarding_filters: Optional[list[dict]] = None, data_channels: Optional[list[dict]] = None, data_channel_signaling: Optional[bool] = None, ignore_disconnect_websocket: Optional[bool] = None, data_channel_signaling_timeout: Optional[int] = None, disconnect_wait_timeout: Optional[int] = None, websocket_close_timeout: Optional[int] = None, websocket_connection_timeout: Optional[int] = None, audio_streaming_language_code: Optional[str] = None, insecure: Optional[bool] = None, client_cert: Optional[bytes] = None, client_key: Optional[bytes] = None, ca_cert: Optional[bytes] = None, proxy_url: Optional[str] = None, proxy_username: Optional[str] = None, proxy_password: Optional[str] = None, proxy_agent: Optional[str] = None, degradation_preference: Optional[SoraDegradationPreference] = None) -> SoraConnection: ...
|
|
494
|
+
def create_connection(self, signaling_urls: list[str], role: str, channel_id: str, client_id: Optional[str] = None, bundle_id: Optional[str] = None, metadata: Optional[dict] = None, signaling_notify_metadata: Optional[dict] = None, audio_source: Optional[SoraTrackInterface] = None, video_source: Optional[SoraTrackInterface] = None, audio_frame_transformer: Optional[SoraAudioFrameTransformer] = None, video_frame_transformer: Optional[SoraVideoFrameTransformer] = None, audio: Optional[bool] = None, video: Optional[bool] = None, audio_codec_type: Optional[str] = None, video_codec_type: Optional[str] = None, video_bit_rate: Optional[int] = None, audio_bit_rate: Optional[int] = None, video_vp9_params: Optional[dict] = None, video_av1_params: Optional[dict] = None, video_h264_params: Optional[dict] = None, audio_opus_params: Optional[dict] = None, simulcast: Optional[bool] = None, spotlight: Optional[bool] = None, spotlight_number: Optional[int] = None, simulcast_rid: Optional[str] = None, spotlight_focus_rid: Optional[str] = None, spotlight_unfocus_rid: Optional[str] = None, forwarding_filter: Optional[dict] = None, forwarding_filters: Optional[list[dict]] = None, data_channels: Optional[list[dict]] = None, data_channel_signaling: Optional[bool] = None, ignore_disconnect_websocket: Optional[bool] = None, data_channel_signaling_timeout: Optional[int] = None, disconnect_wait_timeout: Optional[int] = None, websocket_close_timeout: Optional[int] = None, websocket_connection_timeout: Optional[int] = None, audio_streaming_language_code: Optional[str] = None, insecure: Optional[bool] = None, client_cert: Optional[bytes] = None, client_key: Optional[bytes] = None, ca_cert: Optional[bytes] = None, proxy_url: Optional[str] = None, proxy_username: Optional[str] = None, proxy_password: Optional[str] = None, proxy_agent: Optional[str] = None, degradation_preference: Optional[SoraDegradationPreference] = None, user_agent: Optional[str] = None) -> SoraConnection: ...
|
|
489
495
|
|
|
490
496
|
def create_audio_source(self, channels: int, sample_rate: int) -> SoraAudioSource: ...
|
|
491
497
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sora_sdk
|
|
3
|
-
Version: 2025.
|
|
3
|
+
Version: 2025.3.0
|
|
4
4
|
Summary: WebRTC SFU Sora Python SDK
|
|
5
5
|
Home-page: https://github.com/shiguredo/sora-python-sdk
|
|
6
6
|
Author-email: "Shiguredo Inc." <contact+pypi@shiguredo.jp>
|
|
@@ -93,20 +93,12 @@ Please read <https://github.com/shiguredo/oss/blob/master/README.en.md> before u
|
|
|
93
93
|
|
|
94
94
|
## sora_sdk パッケージの追加
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
[uv](https://docs.astral.sh/uv/)
|
|
96
|
+
[uv](https://docs.astral.sh/uv/) の利用を推奨します。
|
|
99
97
|
|
|
100
98
|
```bash
|
|
101
99
|
uv add sora_sdk
|
|
102
100
|
```
|
|
103
101
|
|
|
104
|
-
### pip
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
pip install sora_sdk
|
|
108
|
-
```
|
|
109
|
-
|
|
110
102
|
### NVIDIA Jetson 向けパッケージ
|
|
111
103
|
|
|
112
104
|
PyPI 経由ではインストールできません。
|
|
@@ -128,13 +120,17 @@ PyPI 経由ではインストールできません。
|
|
|
128
120
|
- Ubuntu 24.04 LTS x86_64
|
|
129
121
|
- Ubuntu 24.04 LTS arm64
|
|
130
122
|
- Ubuntu 22.04 LTS x86_64
|
|
131
|
-
- Ubuntu 22.04 LTS arm64
|
|
132
|
-
- PyPI からではなくパッケージファイルを利用してください
|
|
123
|
+
- Ubuntu 22.04 LTS arm64
|
|
133
124
|
- macOS Sequoia 15 arm64
|
|
134
125
|
- macOS Ventura 14 arm64
|
|
135
126
|
- Windows 11 x86_64
|
|
136
127
|
- Windows Server 2025 x86_64
|
|
137
128
|
|
|
129
|
+
### Jetson 向け
|
|
130
|
+
|
|
131
|
+
- Ubuntu 22.04 LTS arm64 (NVIDIA Jetson JetPack SDK 6)
|
|
132
|
+
- PyPI からではなくパッケージファイルを利用してください
|
|
133
|
+
|
|
138
134
|
### macOS の対応バージョン
|
|
139
135
|
|
|
140
136
|
直近の 2 バージョンをサポートします。
|
|
@@ -157,7 +153,6 @@ PyPI 経由ではインストールできません。
|
|
|
157
153
|
### 優先実装が可能な機能一覧
|
|
158
154
|
|
|
159
155
|
- Windows 11 arm64
|
|
160
|
-
- Ubuntu 22.04 arm64
|
|
161
156
|
- Ubuntu 22.04 arm64 (NVIDIA Jetson JetPack SDK 6.1)
|
|
162
157
|
- Ubuntu 20.04 arm64 (NVIDIA Jetson JetPack SDK 5)
|
|
163
158
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
LICENSE
|
|
2
2
|
MANIFEST.in
|
|
3
3
|
README.md
|
|
4
|
+
VERSION
|
|
4
5
|
buildbase.py
|
|
5
6
|
pypath.py
|
|
6
7
|
pyproject.toml
|
|
@@ -38,4 +39,5 @@ tests/test_simulcast.py
|
|
|
38
39
|
tests/test_sora_disconnect.py
|
|
39
40
|
tests/test_type_disconnect.py
|
|
40
41
|
tests/test_type_switched.py
|
|
41
|
-
tests/test_vad.py
|
|
42
|
+
tests/test_vad.py
|
|
43
|
+
tests/test_version.py
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import os
|
|
2
|
-
import sys
|
|
3
2
|
import time
|
|
4
|
-
import uuid
|
|
5
3
|
|
|
6
4
|
import pytest
|
|
7
5
|
from client import (
|
|
@@ -21,7 +19,7 @@ from sora_sdk import (
|
|
|
21
19
|
|
|
22
20
|
|
|
23
21
|
@pytest.mark.skipif(os.environ.get("AMD_AMF") is None, reason="AMD AMF でのみ実行する")
|
|
24
|
-
def test_amd_amf_available(
|
|
22
|
+
def test_amd_amf_available(settings):
|
|
25
23
|
capability = get_video_codec_capability()
|
|
26
24
|
|
|
27
25
|
amd_amf_available = False
|
|
@@ -68,26 +66,18 @@ def test_amd_amf_available(setup):
|
|
|
68
66
|
"H265",
|
|
69
67
|
],
|
|
70
68
|
)
|
|
71
|
-
def test_amd_amf_sendonly_recvonly(
|
|
69
|
+
def test_amd_amf_sendonly_recvonly(settings, video_codec_type):
|
|
72
70
|
if not is_codec_supported(video_codec_type, SoraVideoCodecImplementation.AMD_AMF):
|
|
73
71
|
pytest.skip(
|
|
74
72
|
f"このチップでは {video_codec_type} のエンコード/デコードの両方がサポートされていません"
|
|
75
73
|
)
|
|
76
74
|
|
|
77
|
-
signaling_urls = setup.get("signaling_urls")
|
|
78
|
-
channel_id_prefix = setup.get("channel_id_prefix")
|
|
79
|
-
metadata = setup.get("metadata")
|
|
80
|
-
|
|
81
|
-
channel_id = f"{channel_id_prefix}_{__name__}_{sys._getframe().f_code.co_name}_{uuid.uuid4()}"
|
|
82
|
-
|
|
83
75
|
sendonly = SoraClient(
|
|
84
|
-
|
|
76
|
+
settings,
|
|
85
77
|
SoraRole.SENDONLY,
|
|
86
|
-
channel_id,
|
|
87
78
|
audio=False,
|
|
88
79
|
video=True,
|
|
89
80
|
video_codec_type=video_codec_type,
|
|
90
|
-
metadata=metadata,
|
|
91
81
|
video_codec_preference=SoraVideoCodecPreference(
|
|
92
82
|
codecs=[
|
|
93
83
|
SoraVideoCodecPreference.Codec(
|
|
@@ -100,10 +90,8 @@ def test_amd_amf_sendonly_recvonly(setup, video_codec_type):
|
|
|
100
90
|
sendonly.connect(fake_video=True)
|
|
101
91
|
|
|
102
92
|
recvonly = SoraClient(
|
|
103
|
-
|
|
93
|
+
settings,
|
|
104
94
|
SoraRole.RECVONLY,
|
|
105
|
-
channel_id,
|
|
106
|
-
metadata=metadata,
|
|
107
95
|
video_codec_preference=SoraVideoCodecPreference(
|
|
108
96
|
codecs=[
|
|
109
97
|
SoraVideoCodecPreference.Codec(
|
|
@@ -197,7 +185,7 @@ def test_amd_amf_sendonly_recvonly(setup, video_codec_type):
|
|
|
197
185
|
],
|
|
198
186
|
)
|
|
199
187
|
def test_amd_amf_simulcast(
|
|
200
|
-
|
|
188
|
+
settings,
|
|
201
189
|
video_codec_type,
|
|
202
190
|
expected_implementation,
|
|
203
191
|
video_width,
|
|
@@ -207,24 +195,16 @@ def test_amd_amf_simulcast(
|
|
|
207
195
|
if not is_codec_supported(video_codec_type, SoraVideoCodecImplementation.AMD_AMF):
|
|
208
196
|
pytest.skip(f"このチップでは {video_codec_type} のエンコードがサポートされていません")
|
|
209
197
|
|
|
210
|
-
signaling_urls = setup.get("signaling_urls")
|
|
211
|
-
channel_id_prefix = setup.get("channel_id_prefix")
|
|
212
|
-
metadata = setup.get("metadata")
|
|
213
|
-
|
|
214
|
-
channel_id = f"{channel_id_prefix}_{__name__}_{sys._getframe().f_code.co_name}_{uuid.uuid4()}"
|
|
215
|
-
|
|
216
198
|
video_bit_rate = default_video_bit_rate(video_codec_type, video_width, video_height)
|
|
217
199
|
|
|
218
200
|
sendonly = SoraClient(
|
|
219
|
-
|
|
201
|
+
settings,
|
|
220
202
|
SoraRole.SENDONLY,
|
|
221
|
-
channel_id,
|
|
222
203
|
simulcast=True,
|
|
223
204
|
audio=False,
|
|
224
205
|
video=True,
|
|
225
206
|
video_codec_type=video_codec_type,
|
|
226
207
|
video_bit_rate=video_bit_rate,
|
|
227
|
-
metadata=metadata,
|
|
228
208
|
video_width=video_width,
|
|
229
209
|
video_height=video_height,
|
|
230
210
|
video_codec_preference=SoraVideoCodecPreference(
|