强制编解码器到Speex(而不是Nellymoser)

时间:2014-08-13 20:16:33

标签: actionscript-3 audio-streaming flash

我们使用Flash和RTMP编写了一个基于Web的讨论论坛,用于流式传输和录制。正如在网上多次讨论的那样(例如在SO上,有多个编解码器可用于这样的任务。主要是这些编解码器是Speex和Nellymoser,而Speex是出于多种原因的明显喜爱。

在我们的应用程序中,我们已明确将Speex设置为要选择的编解码器:

    mic = Microphone.getEnhancedMicrophone();
    mic.codec = SoundCodec.SPEEX;

这主要是有效的。但是,有时用户出现并使用Nellymoser进行流式传输,我无法理解。最后一个用户使用的是OSX 10.8,当前使用当前版本的Chrome或Firefox。这是我们已经在不同机器上使用了数百次的设置。必须有一个我没有看到的变量。

如何对Speex强制执行编解码器?我们需要禁止Nellymoser,因为它会产生许多问题(压缩不良,与Speex流无法正常合并,通常会损坏流,......)。

为了完整性(可能存在我没有看到的副作用),我将发布围绕上述两行的代码:

    var options:MicrophoneEnhancedOptions = new MicrophoneEnhancedOptions();
    options.mode = MicrophoneEnhancedMode.FULL_DUPLEX;
    options.autoGain = false;
    options.echoPath = 128;
    options.nonLinearProcessing = true;
    mic = Microphone.getEnhancedMicrophone();
    mic.setSilenceLevel(0, 2000);
    mic.codec = SoundCodec.SPEEX;
    mic.encodeQuality = 7;
    mic.framesPerPacket = 1;
    mic.gain = 50;
    mic.setUseEchoSuppression(true);  
    var ns: NetStream = new NetStream(nc);
    ns.attachAudio(mic);
    ns.publish(stream, "live");
    netStreams.push(ns);

0 个答案:

没有答案