首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于HTTP/TCP的低延迟操作?

基于HTTP/TCP的低延迟操作?
EN

Stack Overflow用户
提问于 2014-09-06 03:40:30
回答 4查看 2.5K关注 0票数 2

试图找到一种合适的技术/容器来通过HTTP/TCP实时传输低延迟Opu?

Ogg容器当然是显而易见的选择。然而,对于低比特率Opus (<50字节/帧),如果需要低延迟流传输,则开销变得巨大。例如,对于Opus @8kbps in 20ms chunks,如果在每个Ogg页面中只放置一个帧,则开销将变为58%。

EN

回答 4

Stack Overflow用户

发布于 2019-04-10 03:06:54

由于Ogg的设计方式,OggOpus绝对不适合低延迟的流媒体。我假设您已经对此有所了解,因为您提到了页面,但为了StackOverflow的好处: Opus数据包被安排到Ogg页面中,每个页面通常包含255个Opus数据包。每个Opus包通常是20ms的音频。每个Ogg页面都包含一个校验和来验证其内容,只有在计算出校验和之后,才能在网络上发送该页面,因此直到整个页面被填满。20ms * 255个数据包=在音频可以通过线路发送之前必须缓冲的大约5秒的音频,从用户的角度来看,这是一个很大的延迟。

诚然,你可以发送更少的包每页,但这会导致更高的数据开销,因为你需要创建更多的ogg页,并且在较低的级别(每页只有几个包),开销变得如此之大,以至于它几乎抵消了音频压缩。

WebRTC是网络上实时Opus音频的典型解决方案;但是,它也假设您使用的是在数据报(例如UDP、WebSocket)上操作的传输层,而不是作为连续流(例如TCP)。当我想要实现到Microsoft语音服务的Opus接口时,这个问题就出现了-因为我想要TCP流上的低延迟和低开销语音。Opus开发人员建议在Opus' own frame length coding之后只使用简单的长度前缀协议。使用这样的协议,您只需发送原始Opus数据包,每个数据包的前缀为一个或两个字节,表示数据包的长度。

票数 3
EN

Stack Overflow用户

发布于 2014-09-07 08:45:31

据我所知,获得低延迟的唯一方法是使用WebRTC。它就是为此而构建的,没有其他基于web的东西是真正意义上的。

您不一定能够选择您的编解码器(至少不能使用更高级别的API),并且编解码器和比特率协商是标准的一部分。但是,对于任何基于web的浏览器插件,你都会得到最低的延迟。

票数 1
EN

Stack Overflow用户

发布于 2014-09-19 23:37:23

使用IcecastHere are some Opus streams over HTTP

Icecast是一个流媒体服务器,目前支持Ogg (Vorbis和Theora)、Opus、WebM和MP3音频流。它可以用来创建一个互联网广播电台或一个私人运行的自动点唱机,以及许多介于两者之间的东西。它非常通用,因为可以相对容易地添加新格式,并支持通信和交互的开放标准。

Icecast是在GNU GPL版本2下分发的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25692895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档