将多个音频流合并为一个red5

时间:2010-08-24 16:33:35

标签: java flex red5

我有几个Flash客户端将实时音频流发送到Red5服务器。是否可以将所有这些音频流组合在一起,以便其他客户端只能订阅一个音频流并收听所有发布者的实时音频?

1 个答案:

答案 0 :(得分:0)

这可能是肯定的,但只有red5,没有。您需要编写自己的库或使用像Xuggler这样的东西。 Red5不对音频或视频数据进行编码或解码,因此无法以您希望的方式合并或操作您的流。
另请注意,如果您使用库来获取对音频流的访问权限,则需要在合并时密切关注,这样您就不会在输出音频中获得嘶嘶声和弹出声。对于两个以上的流,需要一个比下面更复杂的方法:

private short[] mixSamples(short[] samples1, short[] samples2) {
    short[] mixedSamples = new short[samples1.length];
    for (int s = 0; s < samples1.length; s++) {
        int sum = (samples1[s] + samples2[s]) / 2; 
        mixedSamples[s] = (short) (sum < Short.MIN_VALUE ? Short.MIN_VALUE : sum > Short.MAX_VALUE ? Short.MAX_VALUE : sum); 
    }
    return mixedSamples;
}