apache-flex 嵌入的声音过早切断

dtcbnfnu  于 2022-11-01  发布在  Apache
关注(0)|答案(3)|浏览(146)

我有一个Flash Builder/Flash Pro组合项目。由于维护时间线上的声音资源很麻烦,所以我的声音都嵌入到类文件中,例如:

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

然后,这些文件由需要它们的元件的基类引用,并为第10帧上的Actionscript嵌入(因为第二个帧标签位于第10帧上,以便为您给予读取第一个帧标签的空间)。
我发现有几个声音没有一直播放,但是SoundChannel调度了“soundComplete”事件,并且其最终位置与声音的长度相匹配。
所有声音都以44 Hz/ 16 kbps的速度从wav转换为mp3。我伪造了编译器,通过包括一个扩展声音的虚拟SoundAsset来避免引用Flex。
我不知道还有什么其他的步骤来调试这个问题。有没有一种方法来判断问题是在编译端还是在运行端?

已更新

更多的事情我都试过了:

  • 查看了Size报告:非工作声音的嵌入形式比源mp3小
  • 摆脱了我自己的BitmapAsset,让Flash在Flex框架中链接,做任何它能做的事情(肯定更糟)
  • 将编码从44 kHz降至22 kHz(无改善或更差)
  • 将比特率降到8 kbps(我使用的工具dbPowerAmp支持的最低比特率)。这通常会有所帮助,但我通常还是会使用文件末尾的一两个单词
  • 在编码中去掉了两个参数。这对一些只降低比特率的文件没有帮助,但不是所有的文件。另外,它听起来很小。

谢谢你!

ycl3bljg

ycl3bljg1#

对于Flash音频,如果您有高质量的源wav,我建议您使用wav文件将声音资源导入到FLA中。否则,您也可以考虑将mp3转换为wav。然后将FLA导出设置设置为您想要的质量,Flash将以您设置的质量将wav转换为自己的格式,希望问题较少。
完成此操作后,您可以将actionscript的声音元件导出到库中,并设置一个类名,就像您嵌入它一样。
我使用的另一个技巧是我有一个专门用于声音资源的弗拉,它可以用来存储我想要的任意大的波浪。当我导出它时,它会变成一个小的SWF文件,然后我可以将它嵌入到我的主应用程序中。这样,我就不必在每次导出swf时都让Flash将wav重新转换为swf。相反,它只复制swf数据,这样也快得多。

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

au9on6nz2#

如果您在Flash Pro中遇到音频中断问题,则可能需要检查帧速率。
我觉得声音被切断了(在Flash Pro CC 2014中)。我的问题原来与帧率被设置为25而不是默认的24有关。我一直在使用25来解决一个与这个项目中的任何事情都无关的问题,所以我的解决方案是将FPS改为24,这引起了移动所有同步动画以与相应音频重新对准的必要性。
为什么长的音轨在帧速率为25时被切断,而不管是否使用了正确的关键帧,这是一个谜。但是,这解决了症状,所以如果你在Flash Pro中有音频切断问题,你可能需要检查你的帧速率。

v440hwme

v440hwme3#

我的症状是特别当一个音频剪辑特别长,并深入到时间线。
对我有效的方法:我在音频编辑器中打开了音频文件,并在结尾处添加了几秒钟的沉默。
祝你好运!- J.霍尔

相关问题