减少流媒体和直播流媒体方式的延迟

时间:2015-06-17 20:30:48

标签: android opencv streaming libstreaming

我目前正在使用的应用程序使用 libstreaming-example-1 libstreaming)上举例说明的方法将相机从Android设备流式传输到Ubuntu服务器(使用{{ 3}}和openCV)。这样,我的Android设备就像服务器一样,等待客户端(Ubuntu服务器)通过libVLC发送播放信号,然后通过UDP启动流式传输。

我遇到的流媒体问题是我在传输过程中遇到了大约 1.1s 的延迟,我希望将其降低到150ms 最大

我尝试实现了libstreaming-examples的 libstreaming-example-2 ,但是我无法访问详细的文档,我无法弄清楚如何获取在我的服务器上显示流媒体的正确信号。除此之外,我试图看看我能用示例1做些什么来降低它,但直到现在还没什么新的。

PS:我正在使用局域网,所以网络/带宽不是问题。

以下是问题:

  • 哪种方式最适合获得最低延迟 来自相机的视频流?
  • 如何实施示例2?
  • 示例2的流媒体方法更好地将延迟降低到 150毫秒?
  • 此延迟是否与视频解压缩有关 服务器端? (没有丢帧,FPS:30)

谢谢!

1 个答案:

答案 0 :(得分:0)

与你有相同的问题,有大量的流延迟(大约1.5 - 1.6秒)

我的设置是Android设备,它使用libStreaming通过RTSP流式传输相机,接收端是使用libVlc作为媒体播放器的Android设备。现在我找到了一个将延迟减少到250-300毫秒的解决方案。它是通过使用以下参数设置libVlc来实现的。

 mLibvlc = new LibVLC();
    mLibvlc.setVout(LibVLC.VOUT_ANDROID_WINDOW);
    mLibvlc.setDevHardwareDecoder(LibVLC.DEV_HW_DECODER_AUTOMATIC);
    mLibvlc.setHardwareAcceleration(LibVLC.HW_ACCELERATION_DISABLED);
    mLibvlc.setNetworkCaching(150);
    mLibvlc.setFrameSkip(true);
    mLibvlc.setChroma("YV12");
    restartPlayer();

private void restartPlayer() {
    if (mLibvlc != null) {
        try {
            mLibvlc.destroy();
            mLibvlc.init(this);
        } catch (LibVlcException lve) {
            throw new IllegalStateException("LibVLC initialisation failed: " + LibVlcUtil.getErrorMsg());
        }
    }
}

您可以使用setNetworkCaching(int networkCaching)来自定义位延迟

请告诉我这是否对您有所帮助,或者您在此环境或其他环境中找到了更好的解决方案。