如何从Red5上的实时视频流中提取音频?

时间:2013-03-06 15:55:19

标签: java red5 rtmp

我需要从red5上的实时流中提取音频并单独流式传输。
在带有rtmp模块的nginx上我只是通过ffmpeg重新传输这个流而没有视频数据,但我不知道如何做任何事情这个(有或没有ffmpeg)在Red5上。

Google上的第一个链接给了我这个:

  

只需在IClientStreams上注册IStreamListeners,然后在RTMPEvents中将AudioData与VideoData分开

但这并没有多大帮助。说实话,这根本没有用。这些IStreamListeners是什么以及如何在 IClientStream 上注册它们?

而且,更神奇的是,如何在某些RTMPEvent中将AudioData与VideoData分开?

1 个答案:

答案 0 :(得分:1)

这是您扩展RTMPClient并捕获音频或视频事件的方式

private class TestClient extends RTMPClient {
  private int audioCounter;
  private int videoCounter;
  public void connect() {
    private IEventDispatcher streamEventDispatcher = new IEventDispatcher() {
      public void dispatchEvent(IEvent event) {
    System.out.println("ClientStream.dispachEvent()" + event.toString());
    String evt = event.toString();
    if (evt.indexOf("Audio") >= 0) {
      audioCounter++;
    } else if (evt.indexOf("Video") >= 0) {
      videoCounter++;
    }
      }
    };
  }
}

这只是计算a / v事件,但它会让你在那里的一部分。我建议看看red5中的单元测试,你可以在那里学到很多东西。