shiguredo / sora-ios-sdk

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

subscribeしたVideoの音量変更に関して #11

Closed iPre-Innovate closed 6 years ago

iPre-Innovate commented 6 years ago

subscribeしたVideoの音量変更をプログラム的に行いたく MPVolumeViewを用いて変更しようとしていますが音量変更されませんでした

       // 音量調整viewを取得
      let mpVolumeView = MPVolumeView(frame: self.view.bounds)
        // 音量調整用のスライダーを取得
  let mpVolumeSlider: UISlider
        for view in mpVolumeView.subviews {
            let uiview: UIView = view as UIView
            if (uiview.description as NSString).range(of: "MPVolumeSlider").location != NSNotFound {
               mpVolumeSlider = (uiview as! UISlider)
            }
        }
      // 音量変更
  mpVolumeSlider.setValue(0.5)

またAVAudioSessionには音量を取得できますが音量を設定できません

こちらの案として、subscribeしたAudioTrackをAVAudioPlayer等で再生しているのであれば AVAudioPlayerのインスタンスを取得して変更したいと思いますが可能でしょうか?

もし他に何か良い方法があれば教授いただければ嬉しいです

環境

szktty commented 6 years ago

音量の変更についてただいま対応中です。申し訳ありませんが、もうしばらくお待ちください。

szktty commented 6 years ago

@iPre-Innovate お待たせしました。音量の変更には AVAudioSessionsetInputGain(_:) メソッドをお使いください。 MPVolumeView では変更できません。

ドキュメントにも追記しておきます。フィードバックありがとうございました。

iPre-Innovate commented 6 years ago

迅速な対応ありがとうございます 確認して見ます

iPre-Innovate commented 6 years ago

すみません確認が遅くなりましたが 以下のようなコードでsetInputGain(_:)を試しましたが subscribeしている音声の音量をセット(0から1の範囲で)してますがノーエラーで変更もされないです

もし原因等が分かればご教授いただければと思います

            Sora.shared.configureAudioSession(block: {
                do{
                    let audio=AVAudioSession.sharedInstance()
                   //  0 < currentVolume <1
                    try audio.setInputGain(currentVolume)
                }catch{
                    print("faild change volume")
                }
            })

環境

szktty commented 6 years ago

たびたび申し訳ありません、再度確認しましたが setInputGain(_:) では音量を変更できなかったようです。こちらの勘違いと調査不足でした。

近日中に音量を変更する API を追加したアップデートをリリースします。 libwebrtc に音量に関する API は用意されているのですが、 SDK では libwebrtc の API を隠蔽しているためにアクセスできません。また、ロールによって音声の操作に違いがあるため、そちらも整理してドキュメントに追記する予定です。

szktty commented 6 years ago

@iPre-Innovate 音量の変更を行う API を追加した 2.0.2 をリリースしました。 MediaStream の audioVolume プロパティで音量の変更が可能です(パブリッシャーでは変更できません)。

音声の操作についてもドキュメントに用意しましたので、詳しくはこちらも参照してください。 https://sora.shiguredo.jp/ios-sdk-doc/audio.html

iPre-Innovate commented 6 years ago

何度もご対応ありがとうございます 遅くなりましたが音量変更できることが確認できました。

以下コメントとして 正確に実験したわけがないので 設定が0から10の範囲とのことですが、値に比例して音量大きくなってないような 0から1の範囲にて一番音量が変わっている感じがします

宜しくお願いします

szktty commented 6 years ago

音量の 0 から 10 という値は、ラップする WebRTC ライブラリの API に従っています。現状は SDK 側で特に手を加えていませんので、お手数ですが実際の値と音量を比べながら調整をお願いします。

-- M63 のソースコードですが、以下の volume プロパティのコメントに書かれています。今後も WebRTC のリリースで変更があれば追従します。 https://chromium.googlesource.com/external/webrtc/+/b3fd9700eb1d5e79e7eed37db0bca2fae059fefe/sdk/objc/Framework/Headers/WebRTC/RTCAudioSource.h#23

iPre-Innovate commented 6 years ago

ご確認ありがとうございます 音量の大きさはは主観的なところもあるのでこちらで調整させていただきます