2011-11-21 21 views
7

Hola a todos y gracias por cualquier ayuda con anticipación.Cambiar canciones en jPlayer haciendo clic en un enlace, alojado en Amazon S3

Tengo una aplicación de ruby ​​on rails en la que estoy intentando transmitir audio a través de jPlayer, que está alojado en S3. Hasta ahora no he tenido problemas para cargar archivos o usar los navegadores integrados en el reproductor para reproducir archivos de audio, o incluso obtener jPlayer para inicializar con una canción que está en S3. El problema viene cuando comienzo a cambiar las canciones.

Me inicializar jPlayer así:

$('a.html5').click(function() { 

    var url = $(this).attr('href'); 

    $("#jquery_jplayer_1").jPlayer({ 
     ready: function (event) { 
      $(this).jPlayer("setMedia", { 
       mp3: url 
      }); 
     }, 
     swfPath: "javascripts", 
     supplied: "mp3", 
     wmode: "window" 
    }); 
    return false; 
}); 

donde los mp3: URL apunta a la URL S3 (todo esto funciona muy bien).

Esto me permite seleccionar una canción de una lista de enlaces, y se carga y comienza a jugar sin problemas.

El problema es que cuando trato de cambiar canciones, obtengo un error de control de acceso-permitir-origen. Así que probé lo siguiente:

$('a.html5').click(function() { 

    var url = $(this).attr('href'); 

    $("#jquery_jplayer_1").jPlayer("setMedia", mp3: url).jPlayer("play"); 

    return false; 
    }); 

Esto todavía me da un error de control de acceso-permitir-origen. He estado golpeando mi cabeza contra la pared durante horas tratando de resolver esto y nada.

Así que, básicamente, un resumen es que puedo inicializar jPlayer y reproducir una canción muy bien, pero cuando quiero ir a cambiar una canción, los errores de access-control-allow-origin me arruinan el día.

¿Alguna idea?

Respuesta

8

Bueno, parece que el único problema era la falta de soportes de todo el mp3: url parte de jPlayer ("setMedia" ....

por lo que debería haber sido (...).jPlayer("setMedia", {mp3: url}).(...)

+0

Gracias por el ejemplo de la reproducción de un archivo haciendo clic en un enlace.! Encontré muchas muestras de cargar el archivo en el documento listo, pero este es el primero en cargar un archivo diferente con un clic. –

2

después de buscar mucho que podría ser una de las soluciones demasiado

 function songs(json1) {
$("#jquery_jplayer_1").jPlayer("destroy"); //this will destroy previous jplayer content and then if you again call this function it will add the new url of you audio song to the jplayer
var audio_url_inside = json1.audio_url;
$('#jquery_jplayer_1').jPlayer({
ready:function (event) {
$(this).jPlayer("setMedia", {
mp3:audio_url_inside,
oga:audio_url_inside
}).jPlayer("play"); //attemp to play media
},
swfPath:"http://www.jplayer.org/2.1.0/js",
supplied:"mp3, oga"
});
}

:. Esperamos que ayude a

+0

La mejor solución con diferencia. El truco es el .jPlayer ("destruir"); –