首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用媒体源扩展(MSE)低延迟模式

如何使用媒体源扩展(MSE)低延迟模式
EN

Stack Overflow用户
提问于 2019-04-28 15:23:57
回答 2查看 1.3K关注 0票数 6

我读到过MSE有这种low-latency模式,它为解码提供了零缓冲。尽管这可能会带来不稳定的性能,但从理论上讲,当用于实时流时,它应该提供更低的延迟。有谁知道触发这个low-latency模式的“诀窍”是什么?

参考:https://blog.parsecgaming.com/game-streaming-tech-in-the-browser-with-parsec-5b70d0f359bc

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-29 00:16:45

这不是一个完整的答案,因为我自己才刚刚学到这个。似乎Chromium正在使用来自MP4流的提示来确定是否应该使用低延迟模式。

video_renderer_impl.cc

代码语言:javascript
复制
bool ShouldUseLowDelayMode(DemuxerStream* stream) {
  return base::FeatureList::IsEnabled(kLowDelayVideoRenderingOnLiveStream) &&
         stream->liveness() == DemuxerStream::LIVENESS_LIVE;
}

然后在mp4_stream_parser.cc

代码语言:javascript
复制
// In ISO/IEC 14496-12:2005(E), 8.30.2: ".. If an MP4 file is created in
// real-time, such as used in live streaming, it is not likely that the
// fragment_duration is known in advance and this (mehd) box may be
// omitted."

// We have an unknown duration (neither any mvex fragment_duration nor moov
// duration value indicated a known duration, above.)

// TODO(wolenetz): Investigate gating liveness detection on timeline_offset
// when it's populated. See http://crbug.com/312699
params.liveness = DemuxerStream::LIVENESS_LIVE;

因此,如果您可以生成一个没有时长的流,它将被认为是实时的,并将使用低延迟模式。

还有一些关于未来在不修改流的情况下触发低延迟模式的机制的讨论:https://github.com/w3c/media-source/issues/21

票数 6
EN

Stack Overflow用户

发布于 2020-10-03 08:39:23

https://github.com/whatwg/html/issues/4638是目前正在孵化的成果。它不是特定于MSE的。现在,随着孵化的进行,HTMLMediaElement.latencyHint属性在Chromium中处于测试阶段。这个想法是,它将覆盖实现的“实时/低延迟”检测启发式的任何结果,给应用程序更多的控制。

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

https://stackoverflow.com/questions/55887980

复制
相关文章

相似问题

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