Подтвердить что ты не робот

Как запрограммирован звуковой плеер?

Это может быть слишком широкий вопрос, но как звучит нормальная программа?

Чтобы быть более конкретным,

  • Какой язык был использован для его программирования?

  • Как отображать данные частоты?

  • Если пользователь загружает файл в формате, отличном от MP3, он преобразуется в MP3 или воспроизводится как есть? Если бывший, как работает преобразование?

  • Как это "графически" отображается в браузере так же, как и на самом деле? Это также вещь HTML 5, о которой я ничего не знаю?

Я большой поклонник soundcloud и не мог перестать удивляться, как все это работает! Пожалуйста, помогите мне:)

4b9b3361

Ответ 1

Разработчик SoundCloud здесь,

  • API и текущий сайт построены с помощью Rails. Для получения информации об архитектуре/инфраструктуре и о том, как она развивалась в течение последних 5 лет, ознакомьтесь с Evolution of SoundCloud Architecture. "следующая" версия веб-сайта (все еще в частной бета-версии) полностью построена на Javascript и просто использует API для получения своих данных. В появилось более подробное описание, в котором строится следующий SoundCloud.

  • Я не уверен, какой язык или библиотеки используется для обработки звука, но многие аудио-библиотеки предоставляют частотные данные, и мы просто извлекаем их.

  • Пользователи могут загружать файлы AIFF, WAVE (WAV), FLAC, OGG, MP2, MP3, AAC, AMR или WMA. Оригиналы хранятся точно так же, как и для загрузки, но для потоковой передачи на сайте они преобразуются в файлы MP3 с 128 Кбит/с. Опять же, я не уверен в программном обеспечении/библиотеках, но я уверен, что это будет ffmpeg.

  • Для отображения осциллограмм на фоновом выходе, когда аудиофайлы обрабатываются при их загрузке, данные осциллограммы сохраняются в PNG файле. В текущей версии сайта мы просто загружаем этот файл. В Далее png обрабатывается, чтобы вернуть исходные данные, а затем нарисован на холст с точными требуемыми размерами (который сохраняет изображение четким). В настоящее время мы экспериментируем с получением данных формы волны в формате JSON для ускорения этого процесса.

Ответ 2

Я копирую следующую информацию, опубликованную David Noël где-то еще в 2010 году.

Веб-уровень: лак, nginx, haproxy, тонкий

Управление данными: Cassandra, MongoDB, mySQL master/slave cluster, memcached

Веб-структура: Ruby on Rails

CDN: Akamai и Edgecast

Транскодирование/хранение: AWS EC2/S3