相信很多產品經理玩過用聲音傳文件的APP。一個手機選好要發送的文件,滴滴滴的響了一小會,另外一臺手機就收到了文件。這是個有趣的技術,但是它來的很快,走的也很快,我們很多人還沒來得及去了解它,它便幾乎消失在了我們的視野里。那么它到底是怎么做到的呢?
一切皆信息,聲音作為信息的載體能夠發送文件,這看起來沒有什么可以值得深究的:只需要將要傳的文件轉換成數據流,再編碼成聲音,接收方再將聲音解碼成數據流不就可以了嗎?理論上來說,這樣沒什么問題。是的,沒什么問題,1M的文件用聲音估計得傳一天吧,要真這樣做,這技術估計銹成渣了都沒人用吧。
然而我們在使用類似的APP時,發現并不是這樣的,這些APP無論傳多大的文件,聲音的時長基本都一樣(大概3,4s),可這么短的聲音,哪有那么大的容量呢?沒事,搞不定的事找干爹。干爹是誰?Internet,這可是世界上最大的資源主,幾乎是所有APP的干爹。只要干爹分點羹(URL),everything is possible。
說到這里,大家就豁然開朗了,只需要將文件傳到服務器,再把文件的url編碼成聲音傳過去不就可以了嘛。方案說破了,真的很簡單了。殘酷的事實是,一般的url長度對聲音編碼來說還是太長了,互聯網上大部分url的長度也有30+的字符,發個url也要放個半分鐘一分鐘的聲音,是可忍孰不可忍。
幸而,還有一種叫短地址的東西,再長的url也能轉成一個實際信息長度只有6位的短url(微博中很常見)。這些技術都有了,那么事情就好辦了。6位的字符通過聲音傳遞大概也就需要要3,4s的時間,這個一般人都是可以接受的。
最后,完整的描述一下整個過程:當一個手機確認要發送文件時,它首先會將這個文件上傳到服務器,并接收服務器返回的短地址,再將這個短地址編碼成聲音;接收的手機將聲音解碼成短地址后,再從這個地址去下載文件。只是整個APP從形式上讓你感覺到好像是直接通過聲音作為載體將文件傳過去了而已。
這個不就是赤裸裸的明修棧道,暗渡陳倉嗎?一些看似笨重的技術,在巧妙借力,并作適當包裝以后,確有化腐朽為神奇的能力。雖然用聲音傳文件的APP在逐漸淡出我們的視線,但是如果哪天它明修“隧道”,你還能看得出來嗎?
本文來自微信公眾號“給產品經理講技術”(pm_teacher)
我就想知道上傳到服務器要多少時間?