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