呵呵,这是老早的一些东西,被我翻了出来,随然老但还有用的价值,嘻嘻 通过flash+fcs使用音频时的一些知识 我在7yue的论坛上发表过,拿到这里和大家共享,并换些闪点,这里的闪点太难挣了。 我搞flash+fcs已经一年多了,有些自己的经验,但还是想和大家多多交流。 为何解决基于flash+fcs平台上音频传输时的中断问题我又到macromedia老家走了一趟,发现了一篇Macromedia Flash Communication and Audio的文章,阅读后有不少收获,特自己翻译了一下,贴出来和大家一起交流 Macromedia Flash Communication and Audio 1:使用音频介绍当用户在网络环境中使用macromedia flash应用程序时其使用的网络带宽范围是: 56k的调制解调器 - 100M以太网。当用户使用的网络带宽连接速率太低时,将有可能无法发送和接收一个从高带宽网络发送过来的音频数据 开发人员必须谨慎设计他们的应用程序以确保音频的正常工作,选择较低的麦克风采样率使用silent和push-to-talk方法以减少在网络传输上音频数据的总量。使用合适的网络带宽设置用以阻止声音流的中断。 2:使用音频的流程?音频正常的是第一步通过采样麦克风的数据,然后应用音频压缩器进行音频数据的压缩。然后将压缩后的数据形成一个队列传输给服务器,这一压缩技术对讲话进行优化。一般可以将 512字节的16位声音压缩至64字节。 在flash 客户段,可以将音频视频和数据还有命令控制包同时混淆在一个网络流中发往服务器在大多数实际的数据流中音频数据包被赋予了更高的优先权在发往服务器的时候,音频数据包同时被那些要接收音频数据的用户接收。如果音频数据是事先录制好则数据将保存在服务器上,当其被用户点播时则又会附加到其他数据包上一同发送 在客户端,这个数据包将被解压缩成标准的音频数据并播放。 当播放一个已录制的流时,数据将从服务端读取并以同样的方式发送到客户端只要客户端和网路上没有大量数据产生的网络堵塞时,服务器将传输足够的数据以达到尽乎完美的播放效果。 3 声音的格式 声音的采样率有:44.1 kHz, 22.050 kHz, 11.025 kHz, 8.000 kHz and 5.512 kHz 5种。默认的是8 KHz。而压缩也被设置成这个比例. 在flash中麦克风的声音设置是单声道的,这已经使用了优化压缩的技术。对于正常的麦克风音频数据其数据大小和Microphone.rate的属性有关,见下: mic.rate Sampling rate Approximate data rate 5 5.512 kHz 1378 bytes/sec, or 11.025 K bits/sec 8 8.000 kHz 2,000 bytes/sec, or 16 K bits/sec 11 11.025 kHz 2756 bytes/sec, or 22.05 K bits/sec 22 22.050 kHz 5,513 bytes/sec, or 44.1 K bits/sec 44 44.100 kHz 11,025 bytes/sec, or 88.2 K bits/sec 在实际数据中要比以上的稍大一些,因为会有一些附加的信息和数据及网络协议等 4:在flash的视频格式FLV文件中的声音 在FLV文件中的音频数据将被存成立体声或者单声道,立体声的声音将是单声道的两倍另外FLBV文件还使用了其他的压缩技术。当创建FLV文件时请注意音频的设置和允许不同用户的网络带宽 5:设置网络带宽。 在FCS服务端脚本中可以设置网络连接的带宽。它可以用来限制服务端数据的总量或是限制用户想要发送到网上的数据量。对于结合视音频的应用程序非常有必要防止视频包偶尔引发音频的失效。 6:麦克风的增益和背景噪音 在麦克风的增益设置上,只要不会导致裁剪和失真的情况下将其设置的越低越好。过大的增益将导致附加背景杂音的增加 这个可以在用户的Flash Player设置对话框中操作:右键点击flash影片,选择"设置"跳出一个对话框。选择麦克风的按钮在讲话的同时调整增益的滑竿以便其音频的水平线在指示器的黄色范围以内,仅仅偶尔达到红色区域。 背景噪音将使音频听起来不舒服或增加实际讲话的音频水准从而听不清。背景噪音是由讲话人的呼吸、冲击麦克风,周围的环境,附近的对话等等造成的正确设置麦克风的增益,适当的放置麦克风,耳机能降低背景噪音 Microphone.gain 属性可以察看当前的增益值,其为只读属性。 7:防止回音用户可以在麦克风对话框中钩选消除回音的选项这将有助于减少回音和重复听到自己的声音 代码:myMicrophone.useEchoSuppression(true) 也可以消除回音,但更可取的方法还是让用户自己来配制自己的系统 8:处理多用户的对话 我们在用flash做应用程序时,当多个用户同时对话时问题就出现了每一个附加的音频流都会消耗连接服务器和用户之间的网络带宽,当每一个新的连接被接受就产生一个新的音频流。其带宽消耗成直线增长 每一个音频连接都额外的增加的服务器的负载。两个用户连接就会要求服务器端 4个流(2进2出)而当有五个用户连接时就会有25个流(5进20出) 而每一个用户的背景噪音累加在一起,更是让人不舒服 9:Push-to-talk应用 Push-to-talk被设计出来是一个好的办法,这样一来每一个用户不用一直在广播自己的声音在设计push-to-talk界面时可以让用户必须一直按下一个按钮或是一个按键才能讲话 这样以来有助于减少发送到网络上的音频数据,从而也降低了每一个用户的背景噪音 10:利用(沉默)Silence得到更好的音频 当用户不再讲话时,我们可以设置麦克风停止发送音频数据如果麦克风增益被设置适当的话,默认的silence标准将正常工作但我们也可以通过函数myMicrophone.setSilenceLevel( level, timeOut ) 来调整它 在silent期间,麦克风停止发送音频数据,这样做有一些好处:首先,减少了网络数据的在服务器和所有用户之间的传送。二:其他用户将听不到背景噪音的广播,这样其他用户听起来将更加清晰 相关文章:配置麦克风 http://www.macromedia.com/support/f.../mic_config.htm 解决关闭麦克风后仍然发送声音的问题 http://www.macromedia.com/support/f.../muting_mic.htm