it has to do with the samplerate of your Microphone object...
use Microphone.setRate() to change the values... default is 8 (khz)
and I've experienced the effect you describe using this value and
sending a stream from a linux box to a windows box through Red5 (and
probably Adobe products as well... I guess it's a client issue).
try 11 or 22, and see if they are better supported.

of course you can try to upgrade your flash player, but maybe you want
your app to be compatible to earlier versions, so ...
++++
clément

On 9/3/07, Enric Mas Llauradó <[EMAIL PROTECTED]> wrote:
> Hi, i've got a problem with my flash recorder.
>
> I've made a recorder with Flex using Red5.
>
> If I record something in Windows, the flv file is recorded and the quality is 
> good, but if I try to record it with Linux (Debian
> Sarge) the FLV file is created and recorded, but when I play it the voice is 
> so acute, like a Smurf.
>
> I can't find the problem, i try to record with diferent linux versions and 
> computers, but the problem persists. Somebody have
> any idea? Thanks.
>
>
>
> The MXML code:
>
>
> ---------------------------------------------------------------------------------------------------------------------------------
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; layout="absolute" 
> applicationComplete="init()" width="323" height="160">
>
>         <mx:Script>
>
>                 <![CDATA[
>             [Bindable]
>             private var labelString:String;
>                         import flash.media.*;
>                         import flash.net.*;
>                         import flash.events.*;
>                         import flash.utils.*;
>                         import flash.net.navigateToURL;
>                         import flash.external.*;
>
>                         NetConnection.defaultObjectEncoding = 
> flash.net.ObjectEncoding.AMF0;
>                         SharedObject.defaultObjectEncoding  = 
> flash.net.ObjectEncoding.AMF0;
>
>                         private var client_nc:NetConnection;
>                         private var out_ns:NetStream;
>                         private var in_ns:NetStream;
>
>                         private var my_mic:Microphone;
>                         private var audio_pause:Boolean;
>                         private var rec_so:SharedObject;
>
>                         private var anyContent:Boolean;
>             private var audioDir:String;
>             private var red5Host:String;
>             private var red5Port:String;
>
>             public function updateInfo(time:uint):void {
>                  if (ExternalInterface.available) {
>                     ExternalInterface.call("updateInfo", time);
>                  }
>             }
>
>             public function setAudioFilename(audioFilename:String):void {
>                  if (ExternalInterface.available) {
>                     ExternalInterface.call("setAudioFilename", audioFilename);
>                  }
>             }
>
>             public function checkBlankAudio():Boolean {
>                                 if ((ExternalInterface.available) && 
> (anyContent)) {
>                                         return true;
>                                 } else {
>                                         return false;
>                                 }
>             }
>
>                         public function init():void
>                         {
>                                 
> ExternalInterface.addCallback("noAudio",checkBlankAudio);
>                                 audioDir = 
> Application.application.parameters.audioDir;
>                                 red5Host = 
> Application.application.parameters.red5Host;
>                                 red5Port = 
> Application.application.parameters.red5Port;
>                                 anyContent = false;
>                                 // Create a connection
>                                 client_nc = new NetConnection();
>
>                                 // Connect to the application
>                                 client_nc.connect("rtmp://" + red5Host + ":" 
> + red5Port + "/recording");
>
>                                 // add listener for the netStatus events
>                                 
> client_nc.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
>                                 
> client_nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, 
> netSecurityError);
>
>                                 // Create a remote shared object
>                                 rec_so = SharedObject.getRemote("recordings", 
> client_nc.uri, false);
>                                 // Connect to the shared object
>                                 rec_so.connect(client_nc);
>
>                                 audio_pause = false;
>                         NetStream.prototype.onMetaData = function(obj){}
>                         }
>
>                         private function netStatus(event:NetStatusEvent):void 
> {
>                                 trace("netStatus: " + event);
>                                 var info:Object = event.info;
>                                 trace(info.code);
>
>                                 switch(info.code)
>                                 {
>                         case "NetConnection.Connect.Success":
>                                 // Close and recreate streams
>                                 if (in_ns) in_ns.close();
>                                 if (out_ns) out_ns.close();
>                                 in_ns = new NetStream(client_nc);
>                                 out_ns = new NetStream(client_nc);
>                                 
> in_ns.addEventListener(NetStatusEvent.NET_STATUS, inStreamState);
>
>                                 break;
>                         case "NetConnection.Connect.Closed":
>                                 if (in_ns) in_ns.close();
>                                 if (out_ns) out_ns.close();
>                                 break;
>                         }
>                         }
>
>                         private  function 
> inStreamState(event:NetStatusEvent):void{
>                                 var info:Object = event.info;
>
>                                 // NetStream.Pause.Notify
>
>                                 //if ((info.code == "NetStream.Play.Stop") || 
> (info.code == "NetStream.Play.Start"))
>                                 if (info.code == "NetStream.Play.Stop")
>                                 //if (info.code == "NetStream.Buffer.Flush")
>                                 {
>                                         RecStop_btn.enabled = true;
>                                         RecStop_btn.label = "Rec";
>
>                                         PlayPause_btn.enabled = true;
>                                         PlayPause_btn.label = "Play";
>
>                                         audio_pause = false;
>                                 }
>                         }
>
>                         private function 
> netSecurityError(event:SecurityErrorEvent):void {
>                                 trace("netSecurityError: " + event);
>                         }
>
>                         private function playAudio():void
>                         {
>                                 if (audio_pause)
>                                 {
>                                         in_ns.resume();
>                                         estat.text = "*Playing...";
>                                         audio_pause = false;
>                                 }
>                                 else
>                                 {
>                                         // Play the recording
>                                         estat.text = "Playing...";
>                                         if (in_ns) in_ns.close();
>                                         in_ns = new NetStream(client_nc);
>                         in_ns.addEventListener(NetStatusEvent.NET_STATUS, 
> inStreamState);
>                                         in_ns.play(rec_so.data.filename);
>                                         estat.text = "Playing...";
>                                 }
>
>                                 // It's not possible recording or save while 
> audio is playing
>                                 PlayPause_btn.enabled = true;
>                                 PlayPause_btn.label = "Pause";
>
>                                 RecStop_btn.enabled = true;
>                                 RecStop_btn.label = "Stop";
>                         }
>
>                         private function pauseAudio():void
>                         {
>                                 //in_ns.togglePause();
>                                 in_ns.pause();
>                                 estat.text = "Paused";
>                                 audio_pause = true;
>
>                                 // It's possible recording or save while 
> audio is paused
>                                 RecStop_btn.enabled = true;
>                                 RecStop_btn.label = "Rec";
>
>                                 PlayPause_btn.enabled = true;
>                                 PlayPause_btn.label = "Play";
>                         }
>
>                         private function recAudio():void
>                         {
>                                 var d:Date = new Date();
>                                 estat.text = "Recording..."
>                                 anyContent = true;
>                                 // Start publishing the audio output as a 
> recorded stream
>                                 my_mic = Microphone.getMicrophone();
>                         out_ns.attachAudio(my_mic);
>                         var audioFilename:String = 
> "audio-"+d.getTime().toString();
>                             setAudioFilename(audioFilename);
>                                 rec_so.data.filename = audioDir + "/" + 
> audioFilename;
>
>                                 // Publish the stream
>                                 out_ns.publish(rec_so.data.filename, 
> "record");
>
>                                 // It's not possible playing audio while 
> recording
>                                 RecStop_btn.enabled = true;
>                                 RecStop_btn.label = "Stop";
>
>                                 PlayPause_btn.enabled = false;
>                                 PlayPause_btn.label = "Play";
>                         }
>
>                         private function stopAudio():void
>                         {
>                 updateInfo (out_ns.time);
>                                 estat.text = "Stopped ";
>
>                                 // Close output stream
>                         out_ns.close();
>
>                         // bytes
>                         // estat.text = "Stopped"
>
>                                 // It's not possible playing audio while 
> recording
>                                 RecStop_btn.enabled = true;
>                                 RecStop_btn.label = "Rec";
>
>                                 PlayPause_btn.enabled = true;
>                                 PlayPause_btn.label = "Play";
>                         }
>
>                         private function recStopAudio():void
>                         {
>                                 if (RecStop_btn.label == "Rec") recAudio();
>                                 else stopAudio();
>                         }
>
>                         private function playPauseAudio():void{
>                                 estat.text = 'playPauseAudio' + 
> PlayPause_btn.label;
>                                 switch (PlayPause_btn.label)
>                                 {
>                                         case "Play"      : playAudio(); break;
>                                         case "Pause" : pauseAudio(); break;
>                                 }
>                         }
>
>                 ]]>
>         </mx:Script>
>
>         <mx:Panel x="0" y="0" width="323" height="160" layout="absolute" 
> title="Reproductor">
>                 <mx:Button x="10" y="83" label="Rec" click="recStopAudio();" 
> id="RecStop_btn" width="65" fillColors="[#ca0000, #ffffff]"/>
>                 <mx:Button x="82" y="83" label="Play" 
> click="playPauseAudio();" id="PlayPause_btn" width="65" fillColors="[#008080, 
> #ffffff]"/>
>                 <mx:Label x="28" y="23" text="Estat:" width="47" 
> fontWeight="bold" fontStyle="italic"/>
>                 <mx:Label x="75.5" y="23" id="estat" width="152"/>
>                 <mx:Image x="259" y="4" width="37" height="36" alpha="1.0">
>                         <mx:source>woices_i.png</mx:source>
>                 </mx:Image>
>                 <mx:Label x="28" y="43" text="NetStream:" width="73" 
> fontWeight="bold" fontStyle="italic"/>
>                 <mx:Label x="99" y="43" id="notify" width="152"/>
>         </mx:Panel>
>
> </mx:Application>
>
> ---------------------------------------------------------------------------------------------------------------------------------
>
>
> _______________________________________________
> Red5 mailing list
> [email protected]
> http://osflash.org/mailman/listinfo/red5_osflash.org
>

_______________________________________________
Red5 mailing list
[email protected]
http://osflash.org/mailman/listinfo/red5_osflash.org

Reply via email to