Comunidad de diseño web y desarrollo en internet online

Reproductor de mp3 en flash

Citar            
MensajeEscrito el 16 Ago 2012 06:36 pm
Hola a todos. Vengo con una consulta sobre cómo hacer un reproductor para mp3 en flash y AS2.

Resulta que quiero hacer un reproductor para mp3 que deseo poner en mi blog, al que pueda indicarle en el código html la pista que deseo reproducir, es decir, una vez que tengo el reproductor convertido en SWF, sólo cambiar la URL donde está la pista y la reproduzca, sin tener que crear un SWF por cada canción que deseo poner en distintas entradas del blog.

Otra pregunta es qué debo hacer para que al oprimir más de una vez el botón de reproducir se detenga la reproducción y vuelva a comenzar, pues cuando lo hago se reproduce la pista sobre la que ya ha comenzado con el primer click.

He creado un repdoductor al que puedo indicarle la pista a reproducir mediante una ubicación absoluta. Pongo acá el cógigo para que ven a qué me refiero.

Código :

var pos:Number = 0;
var posFinal:Number = 0;

var mp3:Sound = new Sound();

mp3.loadSound ("https://dl.dropbox.com/u/46456165/08%20Alma%20Verde.mp3", false);

btn_Atras.onRelease = function() 
{ 
} 
btn_Reproducir.onRelease = function() 
{ 
mp3.start(pos/1000); 
} 
btn_Pausa.onRelease = function() 
{ 
pos = mp3.position; 
mp3.stop(); 
} 
btn_Detener.onRelease = function() 
{ 
mp3.stop(); 
pos = 0; 
} 
btn_Siguiente.onRelease = function() 
{ 
} 

barra.rep.stop(); 
barra.zona.stop(); 

onEnterFrame = function() 
{ 
trace(mp3.getBytesLoaded()+" - "+mp3.getBytesTotal()); 
var posFinal:Number = Math.round(mp3.getBytesLoaded()*100/mp3.getBytesTotal()); 
barra.zona.gotoAndStop(posFinal); 

var posFinal:Number = Math.round(mp3.position*posFinal/mp3.duration); 
barra.rep.gotoAndStop(posFinal2); 

autor.text = mp3.id3.artist+" - "+mp3.id3.songname; 

dur = int(mp3.duration/1000); 
pos = int(mp3.position/1000); 
playTime = {}; 
playTime.minutes = int((pos)/60); 
playTime.seconds = int((pos)%60); 
playTime.total = checkDigits(playTime.minutes)+":"+checkDigits(playTime.seconds); 
trackTime = {}; 
trackTime.minutes = int(dur/60); 
trackTime.seconds = int(dur%60); 
trackTime.total = checkDigits(trackTime.minutes)+":"+checkDigits(trackTime.seconds); 
if (tiempo.load_display == undefined) 
{ 
tiempo.display = playTime.total+" - "+trackTime.total; 
} 
else 
{ 
barra.display = barra.load_display; 
} 
if (barra.trackDrag != true) 
{ 
prozent = pos*100/dur; 
barra.track_play._xscale = prozent; 
} 
}; 
function checkDigits(toCheck){ 
return (toCheck<10) ? toCheck="0"+toCheck : toCheck; } 


barra.onRelease = function() 
{ 
if(barra._xmouse/2 < posFinal); 
mp3.start(barra._xmouse/2*mp3.duration/posFinal/100); 
}


La pregunta concreta es qué debo hacer para para que pueda usar el SWF con cualquier archivo mp3 sin importar dónde está?

Desde ya muchas gracias.

Por orperedas

2 de clabLevel



 

msie7
Citar            
MensajeEscrito el 16 Ago 2012 06:49 pm
Pásale el valor del tema por flashvars y usa una variable

mp3.loadSound (tema, false);

Recuerda que si quieres cargar de un dominio distinto a donde tienes el swf tendrás que usar un crossdomain.xml

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Ago 2012 01:58 am
Hola Jorge, gracias por responder pronto.

No tengo mucha experiencia con este lenguaje, si pudieras ayudarme con esto sería genial porque no conozco la forma en que debería hacerlo.

Se me olvidaba aclarar en el mensaje anterior que estoy utilizando un reproductor, en mi blog, al que no le modifico nada, sólo tengo que agregar la dirección de la canción, en el código html que coloco directamente en el contenido de las entradas del blog y toma la canción que le especifico.

Acá dejo el código para que te des una idea concreta de lo que digo:

Código HTML :

<object data="http://dl.dropbox.com/u/46456165/emff_0.5.8/skins/emff_lila.swf" height="55" type="application/x-shockwave-flash" width="200">
   <param name="movie" value="http://dl.dropbox.com/u/46456165/emff_0.5.8/skins/emff_lila.swf?src=https://dl.dropbox.com/u/46456165/Music/TeVeoVenirSoledad%5BBachata%5D.mp3">
  <param name="quality" value="high">
  <param name="FlashVars" value="src=https://dl.dropbox.com/u/46456165/Music/TeVeoVenirSoledad%5BBachata%5D.mp3"></object>

Acá dejo la dirección de mi blog para que puedas verlo en acción: http://1000cancionesymas.blogspot.com

Por orperedas

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Ago 2012 02:43 am
Pues ese player esta haciendo exactamente lo que digo, aca

<param name="FlashVars" value="src=https://dl.dropbox.com/u/46456165/Music/TeVeoVenirSoledad%5BBachata%5D.mp3">


Si ya lo tienes, ¿que es lo que quieres hacer?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Ago 2012 04:15 am
En principio quiero hacer uno que vaya más con el concepto del blog, un reproductor propio. Además, tengo varios visitantes ciegos que usan programas lectores de pantalla para leer el contenido de las páginas y usar los gaggets que encuentre en ellas.

En este caso, estor creando un reproductor con características de accesibilidad que hacen que el lector de pantalla pronuncie el nombre del botón que van a pulsar, para en este caso reproducir la música. El reproductor que uso no tiene identificados los botones, y entonces el lector de pantalla sólo dice "botón" en lugar de decir "Reproducir Botón", "Pausa Botón". Esto de la accesibilidad ya lo tengo resuelto.

He encontrado varios reproductores con los que puede cambiar la canción a reproducir con tan solo cambiar la URL del archivo que deseo en cada ocasión, pero nunca están etiquetados los botones y en ocasiones les asigna números, como nombre de botón, que varían cada vez que se carga la página.

En todo caso me gustaría saber qué debo poner en mi código del FLA para que funcione.

Ojalá me haya dado a entender. Gracias por tu interés y disposición de ayudarme.

Por orperedas

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Ago 2012 09:43 am

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 20 Ago 2012 03:58 am
Hola Jorge.

Muchas gracias por tu ayuda. No respondí antes porque la gripe me atrapó, pero ya voy saliendo.

Al final funcionó muy bien usar lo del src en la línea del loudSoun, y no fue necesario utilizar lo del crossdomain, al menos en esta ocasión, debideo a que yo utilizo dropbox para mi alojamiento de canciones y listas de reproducción, y todo funciona bien.

Ahora me han surgido dos problemas. El primero es que si oprimo más de una vez el botón reproducir la pista comienza la cantidad de veces que se le de click al botón, es decir, estoy reproduciendo la pista y si vuelvo a dar click la pista comienta por segunda vez, sin que deje de sonar la primera, y si lo vuelvo a oprimir comienza una nueva reproducción sin que se detengan las ya iniciadas.

El segundo problema es que al utilizar un archivo xml como lista de reproducción se reproduce la primer canción, mas las siguientes no lo hacen sino al dar click en el botón de adelantar, es decir, al terminar la primera no reproduce la segunda.

Te aclaro que he ido construyendo este reproductor con base en manuales y tutoriales que he ido encontrando en la red, y por supuesto también con tu ayuda.

Para ejemplificar mejor dejo acá el código que puedes usar para probar el reproductor en cualquier página donde desees probarlo, como va hasta ahora, para que lo veas y me digas qué podría hacer. Ya luego me encargaré de la estética

Código HTML :

<object data="https://dl.dropbox.com/u/46456165/Prueba%20Cassete%2001%20con%20lista.swf" height="220" type="application/x-shockwave-flash" width="351" autoplay="false">
  <param name="movie" value="https://dl.dropbox.com/u/46456165/Prueba%20Cassete%2001%20con%20lista.swf?playlist=https://dl.dropbox.com/u/46456165/Music/Playlists/playlist_TioSimon2.xml">
  <param name="quality" value="high">
  <param name="flashvars" value"playlis=https://dl.dropbox.com/u/46456165/Music/Playlists/playlist_TioSimon2.xml">
</object>

Acá dejo el código del reproductor para listas de reproducción.

Código ActionScript :

var pos:Number = 0;
var posFinal:Number = 0;
var indice:Number = 0;
var mp3:Sound = new Sound();


var xml:XML = new XML();
xml.ignoreWhite = true;
xml.load(playlist, true);
xml.onLoad = function(exito)
{
   if (exito)
   {
      mp3.loadSound(xml.firstChild.childNodes[0].attributes.dir, true);
   }
   else
   {
      trace("Error");
   }
}

//mp3.loadSound ("01Guacamole.mp3", false);

btn_Atras.onRelease = function()
{
   indice--;
   if (indice < 0)
      indice = xml.firstChild.childNodes.length-1;
   mp3.loadSound(xml.firstChild.childNodes[indice].attributes.dir, true);
}
btn_Reproducir.onRelease = function()
{
   mp3.start(pos/1000);
}
btn_Pausa.onRelease = function()
{
   pos = mp3.position;
   mp3.stop();
}
btn_Detener.onRelease = function()
{
   mp3.stop();
   pos = 0;
}
btn_Siguiente.onRelease = function()
{
   indice++;
   if (indice >= xml.firstChild.childNodes.length)
      indice = 0;
   mp3.loadSound(xml.firstChild.childNodes[indice].attributes.dir, true);

}

barra.rep.stop();
barra.zona.stop();

onEnterFrame = function()
{
   trace(mp3.getBytesLoaded()+" - "+mp3.getBytesTotal());
   var posFinal:Number = Math.round(mp3.getBytesLoaded()*100/mp3.getBytesTotal());
   barra.zona.gotoAndStop(posFinal);
   
   var posFinal2:Number = Math.round(mp3.position*posFinal/mp3.duration);
   barra.rep.gotoAndStop(posFinal2);
   
   autor.text = mp3.id3.artist+" - "+mp3.id3.songname;

   dur = int(mp3.duration/1000);
   pos = int(mp3.position/1000);
   playTime = {};
   playTime.minutes = int((pos)/60);
   playTime.seconds = int((pos)%60);
   playTime.total = checkDigits(playTime.minutes)+":"+checkDigits(playTime.seconds);
   trackTime = {};
   trackTime.minutes = int(dur/60);
   trackTime.seconds = int(dur%60);
   trackTime.total = checkDigits(trackTime.minutes)+":"+checkDigits(trackTime.seconds);
   if (tiempo.load_display == undefined)
   {
      tiempo.display = playTime.total+" - "+trackTime.total;
   }
   else
   {
      barra.display = barra.load_display;
   }
   if (barra.trackDrag != true)
   {
      prozent = pos*100/dur;
      barra.track_play._xscale = prozent;
   }
};

function checkDigits(toCheck){
return (toCheck<10) ? toCheck="0"+toCheck : toCheck; }


barra.onRelease = function()
{
   if(barra._xmouse/2 < posFinal);
   mp3.start(barra._xmouse/2*mp3.duration/posFinal/100);
}

/*var mp3:Sound = new Sound {};
mp3.loadSound {"musica.mp3" false};
mp3.stop {}; //detener
mp3.start {0}; //iniciar reproducción en el segundo 0
mp3.position {}; //posición en milisegundos
mp3.duration {}; //duración total
mp3.id3.artist //artista
mp3.id3.songname; //título de canción*/


Como siempre, desde ya, muchas gracias por la ayuda.


Otto

Por orperedas

2 de clabLevel



 

msie7
Citar            
MensajeEscrito el 20 Ago 2012 04:50 pm
En el caso del play,si no ha terminado vuelve

Código ActionScript :

If(mp3.position < mp3.duration) return;


Para avanzar,tienes que agregar un listener al mp3.onComplete, hay varios post que hablan del tema

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

safari
Citar            
MensajeEscrito el 21 Ago 2012 08:55 am
un mega post de los que a mi me gustan, muchas gracias ^^

Por AngelMadu

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.