soundcloud播放器是如何编程的



这个问题可能太宽泛了,但soundcloud实际上是如何编程的?

更具体地说,

  1. 它是用什么语言编程的?

  2. 它如何显示频率数据?

  3. 如果用户上传的文件格式不同于MP3,它是转换成MP3还是按原样播放?如果是前者,转换是如何工作的?

  4. 它是如何"图形化"显示在浏览器上的?它也是HTML5的东西,我对此一无所知吗?

我是声云的忠实粉丝,忍不住想知道这些是怎么回事!请帮我一下:)

SoundCloud开发者,

  1. API和当前网站都是用Rails构建的。有关架构/基础设施及其在过去5年中的演变信息,请查看SoundCloud架构的演变。该网站的"下一个"版本(仍处于私人测试版)完全使用Javascript构建,只使用API获取数据。"构建下一个SoundCloud"中提供了更多详细信息。

  2. 我不确定具体使用了什么语言/库来处理音频,但许多音频库确实提供了频率数据,我们只是提取了这些数据。

  3. 用户可以上传AIFF、WAVE(WAV)、FLAC、OGG、MP2、MP3、AAC、AMR或WMA文件。对于下载选项,原始文件保持原样,但对于网站上的流媒体,它们被转换为128kbps的MP3文件。同样,我不确定软件/库,但我很确定它会是ffmpeg。

  4. 为了显示波形,在上传音频文件时处理音频文件的后端,波形数据会保存到PNG文件中。在当前版本的网站上,我们只需加载该文件。在Next中,处理png以获取原始数据,然后将其绘制到画布上所需的精确尺寸(这可以保持图像清晰)。我们目前正在尝试以JSON格式获取波形数据,以加快这一过程。

我正在复制2010年David Noël在其他地方发布的以下信息。

Web层:清漆,nginx,haproxy,薄

数据管理:Cassandra、MongoDB、mySQL主/从集群、memcached

Web框架:RubyonRails

CDN:Akamai和Edgecast

代码转换/存储:AWS EC2/S3

最新更新