这个问题可能太宽泛了,但是 soundcloud 是如何编程的呢?
更具体地说,
用什么语言编写的?
如何显示频率数据?
如果用户上传的文件格式不同于 MP3,是转换为 MP3 还是按原样播放?如果是前者,转换如何进行?
它如何以“图形方式”显示在浏览器上?这也是我一无所知的 HTML 5 东西吗?
我是 soundcloud 的忠实粉丝,忍不住想知道所有这些是如何工作的! 请帮帮我 :)
最佳答案
这里是 SoundCloud 开发人员,
API 和当前网站都是使用 Rails 构建的。有关架构/基础设施及其在过去 5 年中如何发展的信息,请查看 Evolution of SoundCloud's Architecture . "next" version该网站的一部分(仍处于私有(private)测试版)完全使用 Javascript 构建,仅使用 API 获取其数据。 Building The Next SoundCloud 中提供了更多详细信息.
我不确定具体使用什么语言/库来处理音频,但许多音频库确实提供频率数据,我们只是提取它。
用户可以上传AIFF, WAVE (WAV), FLAC, OGG, MP2, MP3, AAC, AMR or WMA files .原件与下载选项完全一样,但为了在网站上流式传输,它们被转换为 128kbps MP3 文件。同样,我不确定软件/库,但我很确定它是 ffmpeg。
为了显示波形,在后端处理上传的音频文件时,波形数据会保存到 PNG 文件中。在当前版本的网站上,我们只需加载该文件。接下来,处理 png 以获取原始数据,然后以所需的确切尺寸将其绘制到 Canvas 上(这使图像保持清晰)。我们目前正在试验以 JSON 格式获取波形数据以加快此过程。
关于html - soundcloud player 是如何编程的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12263672/