2011-09-29 216 views
1

儘管這個問題聽起來很基本,而且很簡單,但我還沒有在任何書籍/論壇/網站上找到完整的答案。如何播放多個音頻文件?

我的應用程序快速背景:

我有從屬/多UI選擇器(2名UI拾荒者 - 讓我們稱之爲P1和P2),UITextView的和欄位於屏幕的底部。在欄中,我有按鈕,如「播放」,「暫停」,「倒帶」和「轉發」,每當我滾動UIpicker P1時,Picker p2的值發生變化並相應地改變UITextView中的文本。

我有在我的應用程序中嵌入700個mp3文件(不要驚訝於在應用程序中放置如此​​多文件的想法 - 所有mp3的總大小都是49 mp,這些都是每20秒文件並以非常低的比特率)。 。相對於在採摘值每個MP3文件

這裏是流量 - >我滾動P1 - >在P1的變化值 - > P2值的變化 - >文本中的TextView變化

它像P1中的「章節」和P2中的段落編號,以及實際情況l TextView中的段落文本。

此後,我想嵌入mp3文件,以便在採樣器(P1和P2)中各自的cance在「播放」「暫停」「倒帶」和「轉發」中的mp3也應該改變。

我的要求如下:

上改變選擇器值中的「播放」按鈕所指向的MP3文件應該相應地改變。

我對我的要求理念:

  1. 若要播放MP3文件,我必須把它們放在資源文件夾中,並使用一個NSBundle
  2. 指他們,我可能要做出的NSDictionary陣指的名字MP3文件
  3. 我可能必須創建一個方法(根據選擇器的值檢查mp3文件),它將放置在UIPicker的rowdidselect部分。

夥計們 - 請幫幫我。你的想法,意見,答案和建議都會有所幫助。

請貢獻:-)

在此先感謝:-)

回答

0

我說你有一個合理的做法幾乎想通了。有不止一種方法可以實現這個目標,但是你的是合理的。爲什麼不嘗試呢?

我只是建議一個 AVPlayer和負載一個一次剪輯。加載新剪輯後,請勿保留任何加載的剪輯。由於您看起來只需要一次播放一個文件,因此一名玩家將會播放內存,並釋放內存。由於您引用了iOS並且您的文件很小,因此加載它們應該非常有效。

+0

@Johsua - 非常感謝您的通訊:-)。我想到了。所以這就是我所做的:取了Picker P1和P2的名字(使用didselectrow - 讓我們說「Chapter1」和「Lesson1」),**繼承了兩個名字**(這成爲Chapter1Lesson1)。爲我的mp3(Chapter1Lesson1)保留了相同的pikcer值,並將其作爲「PathForResource」中的變量傳遞給mp3。所以每次我旋轉P1或P2或兩者的無舵選擇器。他們的名字的連接在NSBundle中傳遞給我的Mp3文件 - 當然在主包中存在。 –

+0

作爲任何解決方案都不錯。你知道你也可以在文件名中使用空格,對嗎? :-)這樣你就可以擁有「第1章」和「第1課」 - 它看起來很棒,而且仍然有效。 :-) –