这个问题可能太宽泛了,但soundcloud实际上是如何编程的?
更具体地说,
-
它是用什么语言编程的?
-
它如何显示频率数据?
-
如果用户上传的文件格式不同于MP3,它是转换成MP3还是按原样播放?如果是前者,转换是如何工作的?
-
它是如何"图形化"显示在浏览器上的?它也是HTML5的东西,我对此一无所知吗?
我是声云的忠实粉丝,忍不住想知道这些是怎么回事!请帮我一下:)
SoundCloud开发者,
-
API和当前网站都是用Rails构建的。有关架构/基础设施及其在过去5年中的演变信息,请查看SoundCloud架构的演变。该网站的"下一个"版本(仍处于私人测试版)完全使用Javascript构建,只使用API获取数据。"构建下一个SoundCloud"中提供了更多详细信息。
-
我不确定具体使用了什么语言/库来处理音频,但许多音频库确实提供了频率数据,我们只是提取了这些数据。
-
用户可以上传AIFF、WAVE(WAV)、FLAC、OGG、MP2、MP3、AAC、AMR或WMA文件。对于下载选项,原始文件保持原样,但对于网站上的流媒体,它们被转换为128kbps的MP3文件。同样,我不确定软件/库,但我很确定它会是ffmpeg。
-
为了显示波形,在上传音频文件时处理音频文件的后端,波形数据会保存到PNG文件中。在当前版本的网站上,我们只需加载该文件。在Next中,处理png以获取原始数据,然后将其绘制到画布上所需的精确尺寸(这可以保持图像清晰)。我们目前正在尝试以JSON格式获取波形数据,以加快这一过程。
我正在复制2010年David Noël在其他地方发布的以下信息。
Web层:清漆,nginx,haproxy,薄
数据管理:Cassandra、MongoDB、mySQL主/从集群、memcached
Web框架:RubyonRails
CDN:Akamai和Edgecast
代码转换/存储:AWS EC2/S3