首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在android上如何在Exoplayer RTSP现场直播中获得低延迟?

在android上如何在Exoplayer RTSP现场直播中获得低延迟?
EN

Stack Overflow用户
提问于 2021-10-28 05:56:57
回答 1查看 1.3K关注 0票数 1

我的工作是RTSP现场直播。我正在使用系外播放器RTSP流播放器在我的android应用程序上获得实时流。但是这个流的延迟大约是3秒。在vlc媒体播放器上的延迟是1秒。因此,如何减少外星球员的延迟。有什么办法请告诉我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-01 07:53:14

你面对的是buffering latency。VLC使用自己的引擎和缓冲算法。但是,如果您想减少ExoPlayer上的缓冲延迟,就必须熟悉LoadControl。ExoPlayer在默认实例化中使用DefaultLoadControl。这个LoadControl是属于ExoPlayer库的一个类,它确定播放器为了缓冲流而应该花费的时间长度的值。如果要减少延迟,就必须减少LoadControl缓冲区值。

下面是创建带有自定义load控件的SimpleExoPlayer实例的快速片段:

代码语言:javascript
运行
复制
val customLoadControl = DefaultLoadControl.Builder()
                .setBufferDurationsMs(minBuffer, maxBuffer, playbackBuffer, playbackRebuffer)
                .build()

简单地说,参数是:minBuffer是最小缓冲视频持续时间,maxBuffer是最大缓冲视频持续时间,playbackBuffer是开始播放所需的缓冲视频持续时间,playbackRebuffer是在失败和重试时所需的缓冲视频持续时间。

在您的示例中,您应该将值设置得非常低,特别是playbackBufferminBuffer参数。您应该处理小值(它们在milliseconds).中)。与1000值同时用于minBufferplaybackBuffer

如何使用自定义负载控件:在构建自定义负载控制实例并将其存储在变量中之后,在构建SimpleExoPlayer时应该传递它:

代码语言:javascript
运行
复制
myMediaPlayer = SimpleExoPlayer.Builder(this@MainActivity)
            .setLoadControl(customLoadControl)
            .build()

所期望的:总是推荐使用默认值。如果你把这些值弄乱了,应用程序可能会崩溃,流可能会被卡住,或者播放器会变得非常不正常。所以要明智地操纵价值观。

这里是javadocs DefaultLoadControl Javadocs

如果您不知道什么是缓冲,则系外播放器(或任何其他播放器)可能需要缓冲(加载即将到来的视频/音频部分并将其存储在内存中,呈现,以更快的速度访问并减少播放问题。然而,流媒体需要缓冲,因为它以chunks的形式出现。因此,到达的每一块最终都会被缓冲。如果您将所需的缓冲持续时间设置为1000,则您正在告诉ExoPlayer,到达长度为1000毫秒的第一个流块应该被缓冲并立即播放。我相信没有更简单的方法来解释这一点。祝你好运。

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

https://stackoverflow.com/questions/69748951

复制
相关文章

相似问题

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