Awesome
Sora C SDK
About Shiguredo's open source software
We will not respond to PRs or issues that have not been discussed on Discord. Also, Discord is only available in Japanese.
Please read https://github.com/shiguredo/oss/blob/master/README.en.md before use.
時雨堂のオープンソースソフトウェアについて
利用前に https://github.com/shiguredo/oss をお読みください。
Sora C SDK について
WebRTC SFU Sora 向けの C のクライアント向け SDK です。 libwebrtc を利用せず、 libdatachannel を利用する事でバイナリサイズやフットプリント、アップデート頻度を抑えています。
特徴
- WebRTC ライブラリに libdatachannel を利用しています
- アップデート頻度を抑えることができます
- paullouisageneau/libdatachannel
- コードのフットプリントが小さい Mbed TLS を利用しています
- バイナリサイズが小さい
- WebRTC と Sora シグナリングを含んだ libsorac は libwebrtc と比較してサイズは約 1/7 です
- Apache-2.0 ライセンスで OSS として公開しています
- H.265 (HEVC) 対応
- ハードウェアアクセラレーターを利用
- H.264 (AVC) 対応
- ハードウェアアクセラレーターを利用
- OpenH264 対応
- Simulcast 対応
- RTCP Feedback Messages PLI 対応
- Reduced-Size RTCP 対応
- RTCP CNAME 対応
- SCTP Zero Checksum 対応
- TURN-UDP 対応
Sora C++ SDK との比較
項目 | Sora C++ SDK | Sora C SDK |
---|---|---|
ライセンス | Apache-2.0 | Apache-2.0 |
WebRTC ライブラリ | libwebrtc | libdatachannel |
WebRTC ライブラリライセンス | BSD-3-Clause | MPL-2.0 |
バイナリサイズ | 大きい | 小さい |
フットプリント | 大きい | 小さい |
アップデート頻度 | 積極的 | 控えめ |
暗号ライブラリ | BoringSSL | Mbed TLS |
SRTP ライブラリ | libsrtp | libsrtp |
SCTP ライブラリ | libwebrtc (dcsctp) | usrsctp |
ICE ライブラリ | libwebrtc | libjuice |
WebSocket ライブラリ | Boost | libdatachannel |
プロトコル | Sora C++ SDK | Sora C SDK |
---|---|---|
TURN-UDP | 対応 | 対応 |
TURN-TCP | 対応 | 非対応 |
TURN-TLS | 対応 | 非対応 |
音声コーデック | Sora C++ SDK | Sora C SDK |
---|---|---|
Opus | 対応 | 対応 |
Lyra | 対応 | 非対応 |
AAC | 非対応 | 優先実装 |
映像コーデック | Sora C++ SDK | Sora C SDK |
---|---|---|
VP8 | 対応 | 優先実装 |
VP9 | 対応 | 優先実装 |
AV1 | 対応 | 優先実装 |
H.264 (HWA) | 対応 | 対応 |
H.265 (HWA) | 対応 | 対応 |
OS / アーキテクチャ | Sora C++ SDK | Sora C SDK |
---|---|---|
Ubuntu / x86_64 | 対応 | 対応 |
Ubuntu / x86 | 非対応 | 優先実装 |
Ubuntu / arm64 | 対応 | 優先実装 |
Ubuntu / arm | 非対応 | 優先実装 |
Debian / riscv64 | 非対応 | 対応予定 |
Debian / riscv32 | 非対応 | 優先実装 |
Raspberry Pi OS / arm64 | 非対応 | 対応予定 |
Raspberry Pi OS / arm32 | 非対応 | 対応予定 |
Windows / x86_64 | 対応 | 優先実装 |
Windows / arm64 | 非対応 | 優先実装 |
macOS / arm64 | 対応 | 対応 |
iOS / arm64 | 対応 | 優先実装 |
Android / arm64 | 対応 | 優先実装 |
Raspberry Pi | Sora C++ SDK | Sora C SDK |
---|---|---|
Raspberry Pi Zero W | 非対応 | 対応予定 |
Raspberry Pi Zero WH | 非対応 | 対応予定 |
Raspberry Pi Zero 2 W | 非対応 | 対応予定 |
Raspberry Pi Zero シリーズ以外の対応予定はありません。
NVIDIA Jetson | Sora C++ SDK | Sora C SDK |
---|---|---|
NVIDIA Jetson AGX Orin | 対応 | 非対応 |
NVIDIA Jetson AGX Xavier | 対応 | 非対応 |
NVIDIA Jetson Xavier NX | 対応 | 非対応 |
NVIDIA Jetson シリーズへの対応予定はありません。
基本的には Sora C++ SDK を利用してください。 バイナリサイズやフットプリント、アップデート頻度を抑えたい場合のみ Sora C SDK を利用してください。
Sora 機能
機能 | Sora C++ SDK | Sora C SDK |
---|---|---|
sendrecv (送受信) | 対応 | 優先実装 |
sendonly (送信のみ) | 対応 | 対応 |
recvonly (受信のみ) | 対応 | 対応予定 |
データチャネルシグナリング | 対応 | 対応 |
マルチストリーム | 対応 | 対応 |
サイマルキャスト | 対応 | 対応 |
スポットライト | 対応 | 非対応 |
データチャネルメッセージング | 対応 | 対応 |
Sora C SDK は Sora の機能への積極な対応を行いません。
対応 Sora
WebRTC SFU Sora 2023.2.0 以降
Sora Labo
検証目的であれば無料で利用可能な Sora Labo があります。 GitHub アカウントを持っていればすぐに利用可能です。
動作環境
- Ubuntu 22.04
- x86_64
- Ubuntu 20.04
- x86_64
- macOS 14
- arm64
- VideoToolbox
- H.264 HWA (Encoder)
- H.265 HWA (Encoder)
対応予定
- Raspberry Pi Zero 対応
- Raspberry Pi OS
- arm64 / arm
- H.264 HWA (Encoder)
- VisionFive 2 対応
- Debian 12.0
- riscv64
- H.265 HWA (Encoder)
- Luckfox Pico 対応
- arm64
- H.265 HWA (Encoder)
- H.264 HWA (Encoder)
- JPEG HWA (Decoder)
FAQ
FAQ.md をお読みください。
方針
- Sora の機能への積極的な対応は行いません
- libdatachannel へ積極的な貢献を行います
- https://github.com/paullouisageneau/libdatachannel/pull/1009
- https://github.com/paullouisageneau/libdatachannel/pull/1015
- https://github.com/paullouisageneau/libdatachannel/pull/1037
- https://github.com/paullouisageneau/libdatachannel/pull/1041
- https://github.com/paullouisageneau/libdatachannel/pull/1061
- usrsctp への貢献を行います
- Mbed TLS や OpenSSL への貢献を行います
- libsrtp への貢献を行います
- 映像コーデックは内蔵しません
- 映像コーデックはハードウェアアクセラレーター、または外部コーデックライブラリを利用します
優先実装
優先実装とは Sora のライセンスを契約頂いているお客様限定で Sora C SDK の実装予定機能を有償にて前倒しで実装することです。
優先実装が可能な機能一覧
詳細は Discord やメールなどでお気軽にお問い合わせください
- WebRTC's Statistics
- libdatachannel 側への貢献を含みます
- Google congestion control (GCC)
- libdatachannel 側への貢献を含みます
- RTP Extensions for Transport-wide Congestion Control
- Transport-Wide Congestion Control
- libdatachannel 側への貢献を含みます
- RTCP XR
- libdatachannel 側への貢献を含みます
- RTP Retransmission Payload Format
- libdatachannel 側への貢献を含みます
- RTP ULPFEC
- libdatachannel 側への貢献を含みます
- RTP FlexFEC
- libdatachannel 側への貢献を含みます
- RTP header extensions
- Absolute Capture Time
- Absolute Send Time
- Video Layers Allocation
- Video BFrame RTP Header Extension
- libdatachannel 側への貢献を含みます
- HWA を利用したコーデック
- AAC HWA 対応
- Sora の対応も含みます
- RTP Payload Format for MPEG-4 Audio/Visual Streams
- VP8 / VP9 / AV1 / H.264 / H.265 の HWA 対応
- AMD Advanced Media Framework (AMF) SDK
- Intel oneVPL
- NVIDIA Video Codec SDK
- AAC HWA 対応
- 次世代コーデック
- H.266 (VVC) 対応
- Sora の対応も含みます
- libdatachannel 側への貢献を含みます
- RTP Payload Format for Versatile Video Coding (VVC)
- EVC 対応
- Sora の対応も含みます
- libdatachannel 側への貢献を含みます
- RTP Payload Format for Essential Video Coding (EVC)
- H.266 (VVC) 対応
- プラットフォーム
- iOS 対応
- arm64
- Android 対応
- arm64
- Windows 対応
- arm64
- Ubuntu 対応
- x86
- arm64
- arm32
- iOS 対応
サポートについて
Discord
- サポートしません
- アドバイスします
- フィードバック歓迎します
最新の状況などは Discord で共有しています。質問や相談も Discord でのみ受け付けています。
バグ報告
Discord へお願いします。
ライセンス
Apache License 2.0
Copyright 2023-2024, Wandbox LLC (Original Author)
Copyright 2023-2024, Shiguredo Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
OpenH264
https://www.openh264.org/BINARY_LICENSE.txt
"OpenH264 Video Codec provided by Cisco Systems, Inc."