【问题标题】:expected live streaming lag from an android device来自 Android 设备的预期直播延迟
【发布时间】:2015-03-23 12:24:14
【问题描述】:

Android 设备的摄像头直播时预计会有多少延迟? 我检查了 Miracast,它有大约 150-300 毫秒的延迟(通常在 160-190 毫秒左右)。 我有一个蓝牙和一个 wifi 直接应用程序,两者都滞后约 400-550 毫秒。我想知道是否有可能重现或接近 Miracast 的性能。 我在 H.264 中对摄像机帧进行编码,并使用我自己的自定义协议通过 TCP 连接传输编码帧(在 WiFi Direct 的情况下)。

【问题讨论】:

    标签: android streaming video-streaming live-streaming


    【解决方案1】:

    视频编码是计算密集型的,因此您可以从硬件获得的任何帮助通常会加快处理速度。值得确保您使用的是利用硬件的编解码器 - 即避免将 H.264 编码全部放在软件中。

    这里有一个视频讨论如何访问硬件加速视频编解码器,虽然有点旧,但适用于旧设备:

    我相信 MediaCodec 现在为硬件编解码器提供了一个 Java API(我自己没有尝试或看过速度比较测试),这让事情变得更容易:

    另请参阅此处有关使用相机的 Surface 预览作为速度辅助工具的说明:

    顺便说一句,500 毫秒似乎并没有那么糟糕,而且您可能会遇到收益递减的情况,因此如果您能忍受当前的延迟,那么减少的努力可能会很高。

    另外,我假设您正在测量服务器端的延迟(或延迟)?如果是这样,您还需要查看服务器如何解码和呈现,尤其是当您将自己的播放器与第三方播放器进行比较时。

    无论流等延迟如何,都值得查看接收端的抖动缓冲区 - 简单来说,在开始播放之前等待大量数据包可能会导致更多的启动延迟,但它也可能会提供更好的整体用户体验。这是因为在进入用户不喜欢的“缓冲”模式之前,大缓冲区将更能容忍延迟的数据包。

    这是一种平衡,您的需求可能会以某种方式决定偏见。例如,如果您计划像应用程序一样进行视频聊天,那么延迟非常重要,因为它开始对 200-300 毫秒以上的用户感到厌烦。如果您提供的是体育赛事的提要,那么延迟可能不太重要,避免缓冲暂停可能会提供更好的用户感知质量。

    【讨论】:

    • 嘿,谢谢你的回答..问题基本上是android相机预览回调,它每50毫秒左右才被调用一次..所以我在等待预览回调时浪费了很多时间..我尝试设置相机 fps 范围,但效果不佳,所以我现在将尝试直接通过表面..编码器和解码器非常快,但它们似乎确实缓冲了一些 NAL 单元..什么我一直在寻找某种基准或 android 流媒体应用程序的东西......几乎所有 Play 商店中的流媒体应用程序也滞后,这让我想知道滞后是否是不可避免的
    • @thunderbird 你在这方面做得怎么样了?
    • @kar 如果我没记错的话,我被卡在了大约 200-400 毫秒的延迟。但这几乎是 4 年前在 Windows PC 的 nexus 7 上的情况了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 2022-08-20
    • 2013-03-31
    • 1970-01-01
    • 2015-10-10
    • 2017-03-12
    相关资源
    最近更新 更多