0

我正在編寫一個應用程序,其中一個功能是允許用戶錄製短語並在稍後時間收聽。錄製完成後,音軌將假設通過互聯網發送並存儲在服務器中。我的問題是將音頻存儲在android應用程序和服務器中的最佳方式是什麼。我想將它作爲android端的blob存儲在SQLite數據庫中,然後發出HTTP請求在服務器中運行一個php腳本,該腳本還會在外部數據庫中插入一個blob。或者我應該將這些文件存儲在客戶端和服務器端的文件系統中,並且只保留對文件的引用?請指教。謝謝。將音頻文件保存爲數據庫中的BLOB或文件系統中?

+0

文件有多大 - 從Android中的SQLite檢索BLOB僅限於byte []數組 - 因此大文件在低內存設備上會出現問題。 – Jens

+0

大部分時間記錄不應該超過10秒,這使我在3gp格式中大約有20K。最長的記錄可能大約5分鐘 –

+0

好吧,5〜600K左右適合SQLite。您打算在客戶端保留錄音多長時間?永久或直到您與服務器同步爲止? – Jens

回答

0

根據我在你的問題中讀到的內容,沒有理由將這些文件發送到你的外部服務器的數據庫(除非你打算聆聽它...... teehee)。

最好只將音頻存儲爲用戶SD卡上的實際文件,然後在android手機的SQLlitee數據庫中保存對音頻文件的引用。從你所說的話,我不明白你爲什麼需要你的外部服務器的數據庫的信息,但你也可以保存文件的名稱,目錄和ID在你的外部數據庫。

您可以將音頻存儲在SQLlite數據庫中的BLOB中,但要注意,如果音頻錄製時間過長,文件會很大,並且您可能會遇到麻煩,從數據庫中插入和檢索。您可以將文件分成較小的500KB部分,並將它們存儲在數據庫中,根據ID檢索它們,將它們分組在一起並回放。

每次用戶想要錄製或播放錄製內容時,在兩臺不同的服務器之間來回傳輸音頻文件將是不必要的和荒謬的。

+0

實際上有一個要求和要點將文件存儲在外部服務器中。一旦用戶錄製語音,他可以收聽,然後將其發送到服務器。因此運行該應用程序的另一個用戶也可以聽該軌道。 –

相關問題