shiguredo / sora-ios-sdk

WebRTC SFU Sora iOS SDK
https://sora-ios-sdk.shiguredo.jp/
Apache License 2.0
42 stars 8 forks source link

電波強度を見て配信する映像の解像度などを調整 #20

Closed daihase closed 6 years ago

daihase commented 6 years ago

現在別のWebRTCを活用したビデオチャットプラットフォームを使ったサービスがありまして、そちらで通信状態が悪い場合で映像送受信を開始した場合、ユーザーの端末にて上手くライブビデオ通話画面が表示されないといった問題が発生しております。

上記サービスにおいてはそうした場合の細かい制御を、アプリ開発者が直接どうこうしようがないものなので一旦保留となっておりますが、御社の sora-ios-sdk では例えばユーザーの電波強度をライブビデオ通話画面へ行く前に取得し、通信状態が芳しくない場合は映像の解像度を調整したりといったことは可能でしょうか!?

電波強度自体はSwift側で取得出来るので、あとはアプリ側で「電波が弱いため映像が乱れる可能性があります」と言ったような注意喚起を出した上で、sdk側で映像送信・受信画面のfpsなり解像度をさげて表示出来ればと考えております。

個人的には電波状況が良好ではない場合、以前教えていただいた映像に黒いViewをかぶせることで「電波状態が良くないため音声onlyモードに切り替えています」というのをユーザーに示してやるのが良いかなと考えてますが、もっといい方法をsdk側で行えるのであればご教授いただけると幸いです。 

voluntas commented 6 years ago

@daihase

上記サービスにおいてはそうした場合の細かい制御を、アプリ開発者が直接どうこうしようがないものなので一旦保留となっておりますが、御社の sora-ios-sdk では例えばユーザーの電波強度をライブビデオ通話画面へ行く前に取得し、通信状態が芳しくない場合は映像の解像度を調整したりといったことは可能でしょうか!?

結論としては可能ですが、課題はあるという回答になります。Sora は配信時にビットレートを指定することが可能ですので、配信ビットレートを落とすことで不安定な回線でもある程度配信できるようになります。

https://sora.shiguredo.jp/ios-sdk-doc/_static/api/docs/Structs/Configuration.html#/s:4Sora13ConfigurationV12videoBitRateSiSgvp

ビットレートの変更は再接続が必要になりますのでご注意ください。

ただ、こちらの問題としては別の配信者が回線が快適な場合「良いビットレートで配信してきた」ときに問題が発生します。 この場合は「送信側に受信者が不安定回線なので、解像度を落としてほしい」という仕組みを作って頂く必要があります。

三人の配信者がいて、三人で会議をしている。

このあたりはかなり悩ましく、一番低い人に合わせるのか、どうするのかという問題になります。

おすすめとしてはある程度低めのビットレートにしておき、高ビットレートでの配信をオプションにしておくというのはどうでしょうか。

ちなみに誤解されやすいのですが、不安定を解消するためには解像度は関係なくすべてビットレートを調整するのが主になります。

他に不明点ありましたらお気軽にご質問ください。

daihase commented 6 years ago

@voluntas ご確認有難うございます。 また三人の配信者例なども、今後取り組もうとしてるケースと似ていて大変参考になりました。

一旦取れ得る対策としては把握出来ましたので、またこちらに関連する部分で不明点が出た場合はご連絡させていただければと思います。有難うございました。