Sora Python SDK 2025.1.0 をリリースしました

時雨堂では Python から WebRTC を利用できるようにする Sora Python SDK を OSS として公開しています。今回、以下のとおり多くの機能を含んだ 2025.1.0 をリリースしました。

ハイライト

  • 映像コーデックプリファレンス機能を追加しました
  • AMD AMF を利用したハードウェアエンコーダー/デコーダーに対応しました
  • WebRTC Encoded Transform を利用できるようにしました
  • libwebrtc M132 にアップデートしました
  • Windows x86_64 で OpenH264 が利用可能になりました
  • リソース不足で映像ビットレートを下げる際、解像度とフレームレートどちらを維持するかを指定できる Degradation preference を利用できるようにしました
  • Python 3.13 に対応しました

映像コーデックプリファレンス機能の追加

今回一番の変更は、映像コーデックを設定できる仕組みを追加したことです。例えば H.264 は NVIDIA のエンコーダーを利用する、AV1 は Intel VPL を利用するといったことが指定できるようになります。エンコーダーやデコーダーをコーデックタイプごとに指定できます。

映像コーデックプリファレンス

AMD AMF へ対応

今回 AMD AMF に対応したことで、主なハードウェアアクセラレーターには対応できたかと思います。ハードウェアアクセラレーターを利用することで CPU リソースを抑えて高ビットレートの映像が配信できるようになります。

映像コーデックプリファレンス

WebRTC Encoded Transform への対応

エンコード済みの音声や映像のバイナリデータを「好きなバイナリデータに置き換えられる」仕組みです。主に End to End Encryption で利用されます。

好きなバイナリデータに置き換えられるということは、後ろの 20 バイトにメタデータを含めるといったこともできるので、その他にも独自のタイムスタンプを埋め込んだり、独自のメタデータを埋め込んだりと、いろいろな場面で利用されていたりします。

WebRTC Encoded Transform

Degradation preference への対応

リソース不足で映像ビットレートを下げる必要に迫られた際、解像度とフレームレートのどちらを維持するかを指定できるようにする仕組みです。例えば解像度を維持をする場合は、フレームレートを優先的に下げていきます。

sora_sdk モジュール

使い方

PyPI に登録してあるため uv add sora_sdk でインストールできます。あとはドキュメントのチュートリアルを読んで映像を配信してみてください。

時雨堂では WebRTC SFU Sora を無料で試せる Sora Labo というサービスを提供していますので、気軽に Sora Python SDK を検証できます。

チュートリアル

リンク

Read more

WebRTC SFU Sora 2025.1.0 リリースノート

2025 年 6 月 25 日に WebRTC SFU Sora 2025.1.0 をリリースしました。今回はスケールアップとスケールアウトを中心に改善しました。また、アプリ側で実現するのが面倒な仕組みを Sora 側で完結できるような機能も追加しています。 スケールアップの効率化 Sora では 1 台で多くのクライアントへ配信できるよう、いわば複数のワーカーを配置して配信を少しずつ分担させるような仕組みになっています。 これまではこのワーカーの数を事前に予測して設定しておく必要がありました。そのため、予測よりも接続が大幅に少ないような場合は、本来必要のないワーカーのリソースを使ってしまうという課題がありました。 今回のリリースからは、ワーカーの数を事前に設定することなく、今現在の接続数に応じて動的にスケールする仕組みを追加しました。これにより、リソースの無駄を最小化し、効率的に運用できるようになります。 さらなるスケールアウト Sora は、分散合意アルゴリズムである Raft をベースにした分散システムとして動作します。これにより、複数台の Sora でクラスター

By voluntas

Sora Cloud を Akamai Connected Cloud へ移行しました

2024 年 8 月に、時雨堂の自社サービスである Sora Cloud を DataPacket というベアメタルクラウドサービスから Akamai Connected Cloud (以降 Linode) へ移行しました。 なぜ移行したのか 自社製品である WebRTC SFU Sora でスケールアウトが実現できるようになったためです。 Sora Cloud は時雨堂が開発しているパッケージソフトウェアである WebRTC SFU Sora (以降 Sora) のクラウド版です。 この Sora が Raft ベースの分散システムに対応し、スケールアウトを実現できるようになりました。そのため、DataPacket のベアメタルサーバーで高スペックのマシンを利用する必要がなくなり、低スペックなサーバーをたくさん並べることで、好きなだけスケールできるようになりました。 移行先の選定 条件として、転送量が安いことが第一でした。 もともと Sora Cloud は転送量や利用時間による課金ではなく、転送量に制限がないサービスとして提供したいという思いがありました。

By voluntas

Rust の MP4 ライブラリを公開しました

先日、Rust で書いた MP4 ライブラリを OSS として Apache License 2.0 にて公開しました。 GitHub - shiguredo/mp4-rust: MP4 libraryMP4 library. Contribute to shiguredo/mp4-rust development by creating an account on GitHub.github.com 以前公開した C++ のMP4 ライブラリは、 Go で書かれた MP4 ライブラリを参考に開発しましたが、今回は MP4 関連の ISO の仕様書を購入し、しっかり仕様を読み込んで開発を行いました。 なぜ今更 MP4 ? これまで、自社製品であるWebRTC

By voluntas

WebRTC SFU Sora 2024 年ロードマップ

WebRTC SFU Sora (以下 Sora) をリリースしてから昨年の 12 月で 9 年目に入りました。ここ最近は OBS を利用した WebRTC の配信に対応したり、より便利な録画機能を提供したりしています。 今回は 2024 年に提供を予定している機能を紹介していきます。今年の大きなアピールポイントは「クラスターリレー機能」と「マルチコーデック対応」の 2 つです。 クラスターリレー機能 現在の Sora のクラスター機能は耐障害性を目的としたものです。特定のクラスターノードに障害が発生しても、再接続すれば別のノードに接続でき、サービスが継続できます。 ただ、ある同一のチャネル (一般的にルームと呼ばれる概念と同じモノです) に参加するクライアントは特定のクラスターノードにしか接続できないという課題がありました。そのため、「どのクラスターノードに接続しても同一のチャネルに参加できる」ようにすることでチャネルのスケールアウトを実現したいと考えていました。 Redis などのデータベースを用意すれば、どのクライアントがどのノードに接続しているかなどの情報を共有する

By voluntas