elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [SRC] Obtener Titulos de un stream de audio.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SRC] Obtener Titulos de un stream de audio.  (Leído 3,293 veces)
16BITBoy

Desconectado Desconectado

Mensajes: 137


En mi pompa..


Ver Perfil WWW
[SRC] Obtener Titulos de un stream de audio.
« en: 11 Enero 2011, 01:09 am »

Hola!
Me mandaron esto del instituto y creo que seria interesante compartir esta clase con ustedes, asi contribuyo un poquito ^^. Asi mientras todos hagamos esto, cumplimos con esa frase muy sonada y buena: "Ningún problema debería resolverse 2 veces".

Esta clase se encarga de mantenerse en escucha a la emisora de streaming que le digamos con el método setSource, y devuelve por pantalla el título de las canciones que esta ha reproducido.

La URL debe apuntar al stream directamente y no al playlist. Ha sido probada con servidores como shoutcast y icecast ( y el que usa M80 radio para emitir que no me acuerdo en estos momentos :D ) Para poner al programa en escucha se llama al método startLog.

Los comentarios los tengo escritos en ingles, pero he añadido una linea mas para los que lo quieran leer en español.

El codigo aqui:
Código
  1. /**
  2.  * Lectura de tags de streams de audio.
  3.  *
  4.  * 16BITBoy
  5.  */
  6.  
  7.  
  8. import java.io.BufferedInputStream;
  9. import java.io.IOException;
  10. import java.net.MalformedURLException;
  11. import java.net.URL;
  12. import java.net.URLConnection;
  13. import java.util.*;
  14.  
  15. public class StreamTitles {
  16.  
  17. /**
  18. * @param args
  19. */
  20. public static void main(String[] args) {
  21.  
  22. StreamTitleLog log = new StreamTitleLog();
  23.  
  24. //Especificamos la emisora a escuchar | Set stream URL.
  25.  
  26. try {
  27. log.setSource(new URL("http://relay5.slayradio.org:8000"));
  28. } catch (MalformedURLException e) {
  29. // TODO Auto-generated catch block
  30. e.printStackTrace();
  31. }
  32. //Que empiece el registro ;) | Start logging.
  33. try {
  34. log.startLog();
  35. } catch (IOException e) {
  36. // TODO Auto-generated catch block
  37. e.printStackTrace();
  38. }
  39.  
  40. }
  41.  
  42. }
  43.  
  44. class StreamTitleLog {
  45.  
  46. private final String tag = "StreamTitle='"; //We should look for this in the stream of bytes
  47.  
  48. private URL url = null;
  49.  
  50. //Default constructor
  51. public StreamTitleLog(){
  52.  
  53. }
  54.  
  55. public void setSource(URL url){
  56. this.url = url;
  57. }
  58.  
  59. public URL getSource(){
  60. return url;
  61. }
  62.  
  63. private void getTitle(BufferedInputStream is) throws IOException{
  64.  
  65. StringBuilder buffer = new StringBuilder();
  66.  
  67. while(true){
  68.  
  69. while(is.available() < 0){
  70. continue;
  71. }
  72.  
  73. buffer.append((char)is.read());
  74.  
  75. if(buffer.charAt(buffer.length() - 1) == '\''){
  76.  
  77. buffer.deleteCharAt(buffer.length() - 1);
  78. titles.add(buffer.toString());
  79.  
  80. System.out.println(buffer.toString());
  81.  
  82. break;
  83.  
  84. }
  85.  
  86. }
  87. }
  88.  
  89. public void startLog() throws IOException{
  90.  
  91. ArrayList<Character> buffer = new ArrayList<Character>();
  92.  
  93. //This is the get header info we need to send in order to retrieve stream titles
  94. //Esta es la info de cabecera del get que necesitamso enviar para recibir los titulos
  95. URLConnection uc = url.openConnection();
  96. uc.setRequestProperty("Connection", "close");
  97. uc.setRequestProperty("icy-metadata", " 1");
  98. uc.setRequestProperty("transferMode.dlna.org", "Streaming");
  99.  
  100. BufferedInputStream is = new BufferedInputStream(uc.getInputStream());
  101.  
  102.  
  103. //El metodo, como una videoconsola trata a un mando de juegos a la espera de
  104. //una combinacion de botones. Esa combinación será que cada uno de los caracteres
  105. //llegue al stream, si solo llega uno, tres o casi todos no nos sirve, lo queremos entero
  106.  
  107. //This method is like trying to retrieve the desired sequence of button presses.
  108. //If the sequence does not match at some point, buffer is cleared.
  109.  
  110. while(true){
  111.  
  112. while(is.available() < 0){
  113. continue;
  114. }
  115. buffer.add((char)is.read());
  116.  
  117. if(buffer.get(buffer.size() - 1) == tag.charAt(buffer.size() - 1)){
  118.  
  119. if(buffer.size() == tag.length()){
  120.  
  121. getTitle(is);
  122. buffer.clear();
  123.  
  124. }
  125.  
  126. }
  127. else{
  128.  
  129. buffer.clear();
  130.  
  131. }
  132. }
  133.  
  134. }
  135.  
  136. }
  137.  

Espero que os sea de alguna utilidad. Saludos ;)


« Última modificación: 11 Enero 2011, 01:36 am por 16BITBoy » En línea

Blog personal: http://www.16bitboy.com/blog

- Que horrible pesadilla, unos y ceros por todas partes... hasta me parecio ver un ¡dos!
- Bender, solo fue una pesadilla, no existe eso que llamas "dos".
kasiko

Desconectado Desconectado

Mensajes: 218



Ver Perfil
Re: [SRC] Obtener Titulos de un stream de audio.
« Respuesta #1 en: 11 Enero 2011, 22:24 pm »

pues se agradece  :D


En línea

Nos vemos...

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: [SRC] Obtener Titulos de un stream de audio.
« Respuesta #2 en: 19 Enero 2011, 21:49 pm »

Es muy interesante tu código!
Se agradece muchísimo este aporte.
No dejes de programar y traernos todas tus ideas, y dudas, para poder llevarlas a cabo :P

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
error initializing audio stream compression ayuda con este error porfavor
Multimedia
®}{h²ø}{æ 3 5,819 Último mensaje 27 Abril 2006, 14:44 pm
por Songoku
Como puedo obtener el audio de un DVD?
Multimedia
.NiXoN. 2 1,794 Último mensaje 18 Septiembre 2006, 16:17 pm
por .NiXoN.
Obtener el Estado del audio en Windows
.NET (C#, VB.NET, ASP)
Rosen 1 2,374 Último mensaje 3 Octubre 2009, 00:08 am
por MANULOMM
Cuda Vs Stream?? STREAM!!
Programación General
APOKLIPTICO 2 8,965 Último mensaje 2 Octubre 2010, 16:59 pm
por APOKLIPTICO
Ayuda con error en obtener audio
Java
tomasscfgcu 3 1,668 Último mensaje 16 Febrero 2015, 21:49 pm
por Usuario Invitado
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines