原著:Will Turnage
翻译:jerrowolf
我想在同一个dir中同时使用AVI的视频和WAV的音频,结果当他们其中一个播放的时候,另一个就无法播放,有什么别的办法解决么?
应用AVI文件而产生的这种矛盾的原因是和windows操作系统中声卡的工作方式有关的。当Director播放一个声音文件时,它就会独占windows操作系统的声音控制权,而别的应用程序就不能控制声音了。这感觉好像不切实际。但是实际上Director并没有真正的播放AVI文件,而是windows操作系统通过Director在播放AVI文件,这样就会有一个看似很不恰当的细节,这就是产生你的问题的原因。Director掌握着声卡的控制权来播放WAV声音,此时Windows试图播放AVI文件,它只能播放其中的视频部分,而无法播放其中的音频部分,因为,声卡的控制权在Director手中。
幸运的是,有四种基本lingo属性可以让你控制windows下音频的混合。他们是:
the soundKeepDevice
the soundDeviece
the soundDeviceList
the soundMixMedia
首先,你应该先看看,the soundKeepDevice,the soundKeepDevice是系统属性,0或者1,当它被设成1或者true时,Director就会在播放声音的时候取得声卡的控制权。并且在整个电影过程中一直掌握这个控制权。如果你把the soundKeepDevice设成0或者false,Director会仅当播放声音的时候取得控制权,而当声音播放完毕之后会将声卡控制权交还windows操作系统。如果你正在开发一个游戏,或者一种需要经常播放大量声音的projector。那么,倘若你将the soundKeepDevice设成0,Director会频繁地和windows交换声卡控制权而会产生错误。
尽管这样,另外两个lingo语句会帮你解决问题。他们就是the soundDevice和the soundDevicelist,那么,首先你要做的是,找出你的操作系统所使用的声音设备。在消息窗口中键入:
put the soundDevice
--‘‘DirectSound‘‘
在windows操作系统中可能有3中选择,分别是DirectSound,MacroMix,和QT3Mix。默认情况下,Director会选择DirectSound,如果无效的话,就会选择MacroMix。要看你的机器上有哪些音频装置是有效的,请使用the soundDeviceList。
put the soundDeviceList
-[‘‘DirectSound‘‘,‘‘MacroMix‘‘,‘‘QT3Mix‘‘]
如果你的操作系统是windowsNT,或者是老的win95系统,其中没有DirectSound,那么DirectSound项就不会还出现,同样,如果你的机器上没有装QuickTime,则QT3Mix项就不会出现。无论如何,MacroMix项总是存在的。那么他们之中谁适合你的projector呢?以下是分别对他们的分析: