菜鸟教程小白 发表于 2022-12-13 11:13:07

ios - 最新版本的 WebRTC iOS native 应用程序音频问题


                                            <p><p>我正在尝试构建 iOS 原生音频/视频聊天并停留在音频上。声音滞后,缺少某些部分并失真。我用 r9919 和由原始构建脚本构建的最新版本 (r10184) 进行了尝试。但是当我尝试使用取自 PerchRTC 演示项目(<a href="https://github.com/perchco/perchrtc" rel="noreferrer noopener nofollow">https://github.com/perchco/perchrtc</a> - 胖库和公共(public)头文件)的旧版本(r8444、r8926、r9132 和 r9137)时,一切似乎都很好(除了小回声)。我应该执行哪些预操作以至少获得与(r8444、r8926、r9132 和 r9137)提供的相同的流媒体质量?
我也尝试使用不同的音频编解码器和不同的媒体约束,仍然没有运气。
我以这种方式创建音频连接</p>

<pre><code>RTCMediaStream *localStream = ;

RTCAudioTrack *localAudioTrack = ;

localAudioTrack.delegate = self;

;

;

;
</code></pre>

<p>使用这个约束(尝试不同的组合)</p>

<p>强制约束 = @[</p>

<pre><code>                                 [ initWithKey:@&#34;OfferToReceiveAudio&#34; value:@&#34;true&#34;]

                                 ];
</code></pre>

<p>可选约束 = @[</p>

<pre><code>                              [ initWithKey:@&#34;internalSctpDataChannels&#34; value:@&#34;true&#34;],

                              [ initWithKey:@&#34;DtlsSrtpKeyAgreement&#34; value:@&#34;true&#34;]

                              ];
</code></pre>

<p>在没有运气获得 audioTrack 之前,我尝试使用 AVAudioSession 进行不同的操作:</p>

<pre><code>AVAudioSession *audioSession = ;

;

;

;

;
</code></pre>

<p>SDP 描述在滞后和非滞后构建中看起来相似(这个是 offer - a=setup:actpass,answer has a=setup:active):</p>

<pre><code>sdp = &#34;v=0

o=- 7772121714021031999 2 IN IP4 127.0.0.1

s=-

t=0 0

a=group:BUNDLE audio

a=msid-semantic: WMS ARDAMS

m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 127 126

c=IN IP4 0.0.0.0

a=rtcp:9 IN IP4 0.0.0.0

a=ice-ufrag:XLpFvB+JEaSN7tww

a=ice-pwd:9hoMfb7AJ9jC6Weej7qqTWkT

a=fingerprint:sha-256 AE:73:33:DD:31:CA:84:5A:96:4D:68:27:A0:23:82:3C:08:3B:7F:7B:A2:FE:91:1D:A7:3A:1F:2A:58:4B:FF:A2

a=setup:actpass

a=mid:audio

a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level

a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time

a=sendrecv

a=rtcp-mux

a=rtpmap:111 opus/48000/2

a=fmtp:111 minptime=10; useinbandfec=1

a=rtpmap:103 ISAC/16000

a=rtpmap:104 ISAC/32000

a=rtpmap:9 G722/8000

a=rtpmap:102 ILBC/8000

a=rtpmap:0 PCMU/8000

a=rtpmap:8 PCMA/8000

a=rtpmap:106 CN/32000

a=rtpmap:105 CN/16000

a=rtpmap:13 CN/8000

a=rtpmap:127 red/8000

a=rtpmap:126 telephone-event/8000

a=maxptime:60

a=ssrc:2797474154 cname:43zbAmj6VvYHT31F

a=ssrc:2797474154 msid:ARDAMS ARDAMSa0

a=ssrc:2797474154 mslabel:ARDAMS

a=ssrc:2797474154 label:ARDAMSa0
</code></pre>

<p>有什么建议吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>演示默认使用顶部扬声器。您需要使用如下代码设置主扬声器:</p>

<pre><code>AVAudioSessionPortOverride override = AVAudioSessionPortOverrideSpeaker;
[RTCDispatcher dispatchAsyncOnType:RTCDispatcherTypeAudioSession
                           block:^{
                                 RTCAudioSession *session =   ;
                                 ;
                                 NSError *error = nil;
                                 if () {
                                     _portOverride = override;
                                 } else {
                                     RTCLogError(@&#34;Error overriding output port: %@&#34;,
                                                 error.localizedDescription);
                                 }
                                 ;
                           }];
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 最新版本的 WebRTC iOSnative 应用程序音频问题,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/33003482/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/33003482/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 最新版本的 WebRTC iOS native 应用程序音频问题