0

我目前正在使用一个应用程序,该应用程序使用libstreaming-example-1 ( libstreaming ) 中示例的方法将相机从 Android 设备流式传输到 Ubuntu 服务器(使用openCVlibVLC)。这样,我的 Android 设备就像一个服务器,等待客户端(Ubuntu 服务器)通过RTSP发送播放信号,然后通过 UDP 开始流式传输。

我在流式传输中面临的问题是,在传输过程中我得到了大约1.1 秒的延迟,我想把它降到最大150 毫秒。

我试图实现 libstreaming-examples 的libstreaming-example-2,但我无法获得详细的文档,而且我无法弄清楚如何获得正确的信号以在我的服务器上显示流. 除此之外,我试图看看我可以用示例 1 做些什么来降低它,但直到现在还没有什么新东西。

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

问题来了:

  • 在从摄像机流式传输视频时,哪种方式最能获得尽可能低的延迟?
  • 如何实现示例 2?
  • 流式传输的示例 2 方法是否可以更好地将延迟降低到 150 毫秒?
  • 这个延迟是否与服务器端的视频解压有关?(不丢帧,FPS:30)

谢谢!

4

1 回答 1

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) 自定义位延迟

请让我知道它是否对您有帮助,或者您在此或其他环境中找到了更好的解决方案。

于 2015-06-19T09:25:22.493 回答