0

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

4

1 回答 1

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;
}

于 2010-09-03T22:03:24.400 回答