0

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

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

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

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

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

4

1 回答 1

1

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

私有类 TestClient 扩展 RTMPClient {
  私人 int 音频计数器;
  私人 int videoCounter;
  公共无效连接(){
    私人 IEventDispatcher 流EventDispatcher = 新 IEventDispatcher() {
      公共无效调度事件(IEvent事件){
    System.out.println("ClientStream.dispachEvent()" + event.toString());
    字符串 evt = event.toString();
    if (evt.indexOf("Audio") >= 0) {
      音频计数器++;
    } else if (evt.indexOf("Video") >= 0) {
      视频计数器++;
    }
      }
    };
  }
}

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

于 2013-03-17T16:06:35.827 回答