相信很多产品经理玩过用声音传文件的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)
我就想知道上传到服务器要多少时间?