Soundcloud: подготовка нескольких треков для потоковой передачи?

После того, как Soundcloud: невозможно установить свойство 'id' неопределенного при попытке воспроизвести песню, было разрешено (еще раз спасибо), я собираюсь сделать следующее - я хочу подготовить несколько экземпляров SM2 для воспроизведения нескольких дорожек по требованию.

Вот код (на этот раз не скомпилированный CoffeeScript для удобства чтения, весь jsbin можно увидеть здесь http://jsbin.com/ejapin/edit#javascript,html)

$ ->
    SOUNDCLOUD_ID = '6d5064768cc29c71e1f66691f435589a'
    PLAYLIST_ID = '1768866'
    SC.initialize client_id: SOUNDCLOUD_ID

    tracks = []
    tracks_total = 0

    tracks_ready = ->
        for track in tracks
          console.log track
          track.play()

    SC.get '/playlists/' + PLAYLIST_ID, (pl) ->
        tracks_total = pl.tracks.length
        for track in pl.tracks
            console.log "Fetching"
            SC.stream "/tracks/#{track.id}", {}, (sound) ->
                tracks.push sound
                console.log "+ Fetched #{tracks.length}"
                if tracks.length == tracks_total
                    tracks_ready()

Я вижу, что Fetching зарегистрирован 11 раз, и я также вижу, что SM2 swf запрашивается такое же количество раз.

Но обратный вызов вызывается только для (обновленного) ПОСЛЕДНЕГО трека (хотя для него звук воспроизводится нормально).

UPD: кстати, он также несколько раз вставляет js SM2, что выглядит как проблема


person Guard    schedule 30.04.2012    source источник
comment
хех, для удобочитаемости я бы предпочел скомпилированную версию. :п   -  person nickf    schedule 30.04.2012
comment
@nickf смотрите ссылку на jsbin для скомпилированного кода   -  person Guard    schedule 01.05.2012


Ответы (1)


В SC JS SDK была ошибка, вызывающая это. Сегодня мы развернули исправление, которое должно это исправить. Спасибо, что сообщили об этом! Пожалуйста, дайте мне знать, если есть еще проблемы.

person Johannes Wagener - SoundCloud    schedule 04.05.2012
comment
ну просто есть время проверить. намного лучше - загружаются все треки... неинициализированные (readyState==0); код: jsfiddle.net/cTeU2 - person Guard; 10.05.2012
comment
вы можете передать параметр autoLoad звукового менеджера, если хотите предварительно загрузить аудио: SC.stream(/tracks/ + track.id, {autoLoad: true}, track_loaded(i)); - person Johannes Wagener - SoundCloud; 10.05.2012
comment
спасибо, но здесь тот же результат - в методе track_ready все readyState равны нулю - person Guard; 10.05.2012
comment
Похоже, вы передаете autoLoad: true для SC.get, а не SC.stream. - person Paul Osman; 13.06.2012