我一直在研究使用WebRTC在浏览器和本机客户端之间交换音频的产品,本机端是用C ++实现的。目前,我已经构建了webRtc的最新稳定版本(分支:)branch-heads/65。
到目前为止,我已经能够让连接对等体进行连接,可以在浏览器上正确接收并呈现音频。但是,尽管chrome调试工具建议将数据从浏览器发送到本机客户端,但本机客户端似乎从未通过其音频轨道接收器接收任何数据。
绝对调用以下代码,并按预期添加通道。
void Conductor::OnAddStream(rtc::scoped_refptr<webrtc::MediaStreamInterface> stream)
{
webrtc::AudioTrackVector atracks = stream->GetAudioTracks();
for (auto track : atracks)
{
remote_audio.reset(new Native::AudioRenderer(this, track));
track->set_enabled(true);
}
}
// Audio renderer derived from webrtc::AudioTrackSinkInterface
// In the audio renderer constructor, AddSink is called on the track.
AudioRenderer::AudioRenderer(AudioCallback* callback, webrtc::AudioTrackInterface* track) : track_(track), callback_(callback)
{
// Can confirm this point is reached.
track_->AddSink(this);
}
AudioRenderer::~AudioRenderer()
{
track_->RemoveSink(this);
}
void AudioRenderer::OnData(const void* audio_data, int bits_per_sample, int sample_rate, size_t number_of_channels,
size_t number_of_frames)
{
// This …Run Code Online (Sandbox Code Playgroud) 我正在编写一个 Web 套接字应用程序,打算使用 Azure Web 应用程序在云上托管。
Web 套接字是使用相当标准的 Owin 中间件实现的,并且在前 100 秒内功能齐全。在这段时间之后,websocket 似乎像发条一样进入了 aborted 状态。
[CLIENT][06/04/2018 11:27:21] WS client connected
[CLIENT][06/04/2018 11:29:01] WS client disconnected
Run Code Online (Sandbox Code Playgroud)
在 IIS Express 实例上尝试此操作会出现相同的问题,尽管延迟似乎是 90 秒而不是 100 秒(这也是一致的)。
作为 Owin 自托管应用程序的一部分运行相同的 websocket 可以稳定运行超过 25 分钟 - 所以这肯定是由托管服务器引起的问题。
在Azure Web应用程序托管上,我启用了Web套接字,并尝试启用“始终开启”功能,希望这可以通过阻止服务器进入待机状态来防止问题 - 但这没有帮助。
是否有任何我不知道的天蓝色设置可以进行调整,以便这些网络套接字可以保持更长时间的打开状态?
非常感谢