如何用Fliestack開發自己的Soundcloud App?
要說處理圖片,人們用的最多的就是Filestack,有各種各樣的自定義圖片。然而,API介面就遠不止於此了 :對上傳的文件沒有任何限制,而且Filestack團隊還提供了其它功能,比如視頻和音頻轉換功能等。
在這次教程中,我們會通過開發一款類似於SoundCloud的app,處理Filestack的音頻轉換,來介紹音頻處理API介面。暫且這個app就叫SoundStack。
這次,為了測試webhooks,我將其部署到了伺服器上,所以在soundstack.herokuapp.com就可以嘗試下demo。在github上也有。
APP
項目的想法是創建一個平台供用戶上傳自己的音樂,分享到網上。
音頻文件以多種形式儲存在數字設備中,比如.wav和.ogg等形式,通用的mp3格式就更不用說了,所以首先要選擇一種格式作為音頻標準:雖然上傳的格式不受限制,但是要轉換成一種格式才行。
UI是這樣的:
主頁列出了所有的歌曲,左側是音樂目錄,高亮為選中的部分。
上方有一個上傳的按鈕,用戶點擊進入上傳頁面:上傳頁面的界面非常簡單。
上傳Track
先用Filestack庫通過pick()函數上傳音頻文件:音頻文件通常比單個圖片要大,所以先假定上傳過程要花幾秒的時間。此外,pick()會收到一些函數作為參數,通知上傳成功或者出現錯誤,也要為onProgress配置參數。onProgress指的是在處理過程中,收到一個當前完成的JSON文件。
我們可以利用這些數字創建一個進度條的小動畫,展示進程。
下面是管理上傳的所有代碼:
因為所有的音頻文件都有一個audio前綴,所以Filestack可以很方便地獲知通過mime-type上傳的是什麼文件。
雖然通常Filestack是用來在模式或窗口裡展示進程,完成後就會關閉,但我們還是決定用一個可愛的動畫處理這個過程。文件被選中在後台運行之後,Filestack會立馬關閉,這正符合我們的需要。
要對用戶來源做一個設備屬性的限制:用戶只能從電腦或移動設備上傳文件。
函數參數這一點和之前的APP沒什麼特別的不同:track的雲URL(cloud URL)儲存在上傳按鈕data-doc-url屬性中。
其它的代碼利用Bootstrap自定義進度條,無論何時onProgress函數停止了,都可以根據現在的上傳進度更新進度條。
最後,當Blob收到命令,提示上傳成功的時候,用戶顯示的進度條就會更新。
NB:習慣使用Filestack API的人應該對此一點都不奇怪,FPProgress不僅只返回現有的進程數目,還返回一些其它的信息。documentation里有更詳盡的內容。
這時候,用戶就可以利用上傳工具上傳音樂了,但還不能進行格式轉換。
音頻轉換
如果讀了音頻轉換文檔的話,你一定注意到轉換需要webhooks:這一過程是不同步的,完成音頻轉換的所有步驟要花費一段時間,所以webhook只是會告訴API負責接收轉換信息的終結點。
Webhook建立在開發者門戶中,與API密鑰綁定:
你可以看到有許多webhooks,功能各不相同,在/convert 路徑中將所有的組裝成一個demo app URL。
到這裡過程就非常簡單明了了,窗體提交後會首先發送一個GET請求到Filestack,Filestack轉換的一些選項, 然後在平台創建一個新的入口。
但是,新歌只有在轉換返回一個音頻轉換後的鏈接之後才能用。
So, what are those options to be sent to Filestack? Let』s take a look at URL string the form:
那麼,其它哪些設置會發送到Filestack呢?URL字元串形式是這樣的:
原始的音軌會轉換成一個192kb的mp3文件,取樣速率48kb,只需要前5秒的時間來加快進程。另外,文件的名字變成了表格輸入的那個。
NB:可用的選擇多很多,但這一點在這裡就不贅述了。
上傳測試
現在添加歌曲:
一旦用戶點擊「Submit」,他們就會看到一個提示:可能要花費幾分鐘才能在列表中看到歌曲。事實上,如果我們返回到首頁的話,是沒有新歌的。
就像前面所說的,the track已經發送到了app伺服器,而且已經正確地儲存了。然而,標記轉換會一直設置為false,直到Filestack通過webhook通知到平台。
在這過程中,Filestack會POST不止一次,以保持伺服器更新到轉換的現有狀態,所以我創建了一條路徑返回伺服器JSON文件中收到最新的信息。
field fp.upload實際的意思是文件正在上傳,還不能使用(在首頁看不到)。
如果再試一次
現在意思是Filestack在進行轉換,fp.converse。基本上當JSON的屬性狀態處於完成狀態的時候,轉換就完成了。
一段時間後,歌曲最後就在列表中顯示出來:
檢查下Filestack的最新反應,看是不是真的完成了:
結果顯示非常順暢!
下面展示一些伺服器代碼,主要是運行中的webhook:
一旦響應狀態等於完成狀態,就可以通過uuid搜索音頻,設置標記轉換等於true。
在列表中能夠看到最新的track。
結論
如果是上傳和處理圖片的話,Filestack很受歡迎。利用API可以操作其它的一些文件,比如音頻文件。
在上文的教程中,我們創建了一個類似於SoundCloud(SoundStack)的APP,用戶可以在網上分享自己的音樂。
另外,利用pick()函數可以實現最初的音頻上傳,獲得一個雲URL(cloud URL),製作一個可愛的動畫,提高用戶體驗。
然後,我們介紹了音頻轉換API,解釋了如何使用webhooks回收轉換的音頻,已在平台展示出mp3文件。
翻譯或許有的不夠準確,希望各位指正!
翻譯:李法見from程序員客棧
文章來源:Filestack
推薦閱讀:
※ELSE 技術周刊(2017.06.02期)
※你用過的最好的代碼閱讀或編輯工具是什麼?
※在上家公司試用期不過,該如何面試找工作?