2015-01-07 87 views
5

是否可以在使用Swift的應用程序中錄製輸出音頻?舉例來說,假設我正在收聽Podcast,並且我想在一個單獨的應用程序中錄製一小段Podcast的音頻。有沒有辦法做到這一點?使用Swift錄製輸出音頻

我環顧四周,但只能找到錄製麥克風錄音等信息。

+0

不可以。由於隱私和權利管理應該很明顯的原因。 – marko

+0

@marko說話時,最好有_some_想法。 – matt

+0

OP似乎想要攔截iOS中的*另一個應用程序*的輸出音頻以記錄它。此外,這意味着源材料不可用,因爲您明確地獲得了這種情況。 這個問題經常被問到童話,答案不會改變,也不可能。如果可能的話,它將允許應用程序惡意錄製來自電話(或VOIP)電話的音頻,並允許付費內容的數字音頻以發行者無意使用的方式使用。 – marko

回答

2

這取決於你如何製作音頻。如果音頻的製作在您的控制範圍內,您可以在輸出上放置一個分接頭,並在播放時將其記錄到文件中。最簡單的方法是使用新的AVAudioEngine功能(還有其他方法,但AVAudioEngine對他們來說基本上是一個簡單的前端)。

當然,如果真正的問題是採取了播客的副本,那麼很明顯你需要做的就是下載反對它的播客。同樣,您可以將流媒體音頻緩存並保存到文件中。有很多應用程序可以做到這一點。但這不是因爲設備的輸出被劫持;這又是因爲我們控制了聲音數據本身

+0

好吧,如果我想要捕捉「外部」播客的音頻片段(我還沒有完整副本),那麼看起來我會有兩種選擇:1)從源和記錄中緩衝它在某一點上;或者2)完全下載 - 在這一點上,我可以訪問聲音數據,就像你說的那樣 - 然後,由於我控制了數據,我可以記錄它的一部分。聽起來正確嗎? –

+0

(1)聽起來是對的,因爲這必須是記錄無線電流的應用程序實際上在做什麼。至於(2),如果你完全下載了它,你就不需要記錄它的一部分;下載_is_錄音。 – matt

+0

據推測,記錄流的應用程序正在使用音頻隊列服務或一些類似的核心音頻。 – matt