2012-07-04 41 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