2012-07-04 38 views
2

我有一个Flash Builder/Flash Pro组合工程。因为在时间轴上维持良好的资产涉及的麻烦,我的声音都被嵌入到类文件,如:嵌入式声音提前切断

[Embed (source="/mp3/Welcome_01_V.mp3", mimeType="audio/mpeg")] 
private static const WELCOME_1:Class; 

这些文件,然后通过嵌入式ActionScript的需要它们的符号,基类引用在第10帧上(因为第二帧标签在第10帧上给你空间让你阅读第一帧)。

我在发现的是,这些声音中的一部分不会一直播放,但SoundChannel发送“soundComplete”事件,其最终位置与Sound的长度相匹配。

所有声音都以44Hz/16 kbps从wav转换为mp3。我伪装了编译器,以避免通过包含扩展Sound的虚拟SoundAsset来引用Flex。

我不知道采取什么其他步骤来进行调试。有没有办法确定问题是在编译端还是在运行端?

更新

更多的事情我已经尝试:

  • 看着尺寸报告:非工作的声音是在 他们的嵌入式形式大于源MP3
  • 摆脱了我自己了BitmapAsset的小并让Flash链接在Flex框架中并做任何事情(绝对更糟糕)
  • 将编码从44 kHz降至22 kHz(没有改进或更差)
  • 将比特率下降到8kbps(最低的dbPowerAmp,我使用的工具支持)。这通常会有所帮助,但我仍然通常在文件末尾使用一两个字
  • 删除了编码中的两个参数。这有助于减少比特率,但不是所有文件。再加上它听起来很苗条。

谢谢!

+1

你见过http://stackoverflow.com/questions/8807462/embedded-mp3-in-actionscript3-wont-play-all-the-way-through? –

+0

只是一个想法 - 位置是已播放的毫秒数,这是否等于在MP3播放器中可见的声音长度?另外,当你嵌入时,最终的swf大小总是大于声音大小(我的意思是字节数)。这是检查整个声音是否嵌入的另一种方法 –

回答

1

对于Flash音频,我建议使用wav文件将声音资产导入到FLA中,前提是您拥有高质量的源wav。否则,你可以考虑把你的mp3转换成wav。然后将FLA导出设置设置为您想要的质量,Flash会按照您设置的质量将您的wav转换为其自己的格式,并希望问题少一些。

一旦你这样做,你可以导出你的库中的动作脚本的声音符号,并设置一个类名,就像你将如何嵌入它。

我使用的另一个诀窍是我有一个FLA仅仅用于声音资产,可以用来储存我想要的大波。当我导出时,它会变成一个小的SWF文件,然后我可以将其嵌入到我的主应用程序中。这样,我从来没有在每次输出swf时都将Flash再次转换为swf。相反,它只是复制更快的swf数据。

[Embed(source="Audio/Sfx.swf", symbol="WELCOME_1_WAV")] 
    private static const WELCOME_1:Class; 
0

如果您在Flash Pro中遇到音频中断问题,则可能需要检查帧速率。

我有一个声音切断的问题(在Flash Pro CC 2014中)。我的问题原来与帧速率设置为25而不是默认值24有关。我一直在使用25来解决与此项目中任何内容无关的问题,所以我的解决方案是将FPS更改为24,它调用移动所有同步动画以重新对齐相应音频的必要性。

无论使用正确的关键帧,帧速率为25时,为什么long(ish)音轨最终会被截断,这是一个谜。但是,这解决了症状,因此如果您在Flash Pro中遇到音频中断问题,则可能需要检查帧频。

+0

不幸的是,我使用的是默认的24 fps,音频是通过代码播放的,而不是在时间轴上播放的。但是,谢谢:) –

-1

我的症状特别是当音频片段特别长并且深入到时间线中时。

什么对我有效:我在音频编辑器中打开了音频文件,并在最后添加了几秒的沉默。

祝你好运! - J.Hall