这可能是一个太宽泛的问题,但是soundcloud实际上是如何编程的?
更具体地说,
用什么语言编程呢?
如何显示频率数据?
如果用户上传的文件格式与MP3不同,是MP3转换还是按原样播放?如果是前者,转换是如何工作的?
它如何“以图形方式”出现在浏览器上?它也是HTML 5的东西,我什么都不知道?
我是soundcloud的忠实粉丝,不禁想知道所有这些是如何工作的! 请帮帮我:))
答案 0 :(得分:40)
SoundCloud开发人员,
API和当前网站是使用Rails构建的。有关架构/基础架构及其在过去5年中的演变方式的信息,请查看Evolution of SoundCloud's Architecture。网站的"next" version(仍处于私有测试阶段)完全使用Javascript构建,只使用API获取其数据。 Building The Next SoundCloud中提供了更多详细信息。
我不确定使用哪种语言/库来处理音频,但很多音频库确实提供频率数据,我们只是提取它。
用户可以上传AIFF, WAVE (WAV), FLAC, OGG, MP2, MP3, AAC, AMR or WMA files。原始文件与下载选项完全一致,但对于网站上的流媒体,它们会转换为128kbps的MP3文件。再说一次,我不确定软件/库,但我很确定它会变成ffmpeg。
为了显示波形,在上传时处理音频文件时在后端,波形数据被保存到PNG文件中。在当前版本的网站上,我们只需加载该文件。在接下来,处理png以返回原始数据,然后将其绘制到所需精确尺寸的画布上(这使图像保持清晰)。我们目前正在尝试以JSON格式获取波形数据,以加快此过程。
答案 1 :(得分:0)
我正在复制DavidNoëlsomewhere else在2010年发布的以下信息。
Web层:Varnish,nginx,haproxy,thin
数据管理:Cassandra,MongoDB,mySQL主/从群集,memcached
Web框架:Ruby on Rails
CDN:Akamai和Edgecast
转码/存储:AWS EC2 / S3