Foros del Web » Programando para Internet » Android »

Reproducción de vídeo bajo Streaming

Estas en el tema de Reproducción de vídeo bajo Streaming en el foro de Android en Foros del Web. Que tal compañeros, ando peleándome con Android desde hace unos días, estoy intentando reproducir un vídeo (mp4/3gp) desde internet, el problema es que el servidor ...
  #1 (permalink)  
Antiguo 12/11/2011, 02:45
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Reproducción de vídeo bajo Streaming

Que tal compañeros, ando peleándome con Android desde hace unos días, estoy intentando reproducir un vídeo (mp4/3gp) desde internet, el problema es que el servidor donde esta alojado es necesario enviar una cookie para tener acceso al vídeo/archivo, por lo tanto, pasar directamente el url del vídeo al videoview no funciona en este caso (a menos que sepan como mandar la info de la cookie por este medio), por lo tanto estaba pensando en descargar primero el archivo y luego reproducirlo, pero me manda error al intentar reproducirlo (MediaPlayer error (1, -2147483648)), aquí dejo el código que tengo...

Código Java:
Ver original
  1. String urlVideo, cookieMU;
  2.     VideoView video;
  3.     MediaController mController;
  4.     SurfaceHolder holder;
  5.    
  6.     @Override
  7.     protected void onCreate(Bundle savedInstanceState) {
  8.         // TODO Auto-generated method stub
  9.         super.onCreate(savedInstanceState);
  10.         setContentView(R.layout.rep);
  11.        
  12.         Bundle extras = getIntent().getExtras();
  13.         urlVideo = extras.getString("urlvideo");
  14.         cookieMU = extras.getString("cookiemu");
  15.        
  16.         video = (VideoView)findViewById(R.id.videoView1);
  17.         Log.d("video","creamos el controlador de video");
  18.         mController = new MediaController(this);
  19.         Log.d("vide","asignamos el video!");
  20.         mController.setAnchorView(video);
  21.        
  22.         Log.d("video","comenzamos a intentar bajar el video");
  23.         downloadVideo();
  24.     }
  25.    
  26.     protected void downloadVideo() {
  27.         if (urlVideo != null) {
  28.             String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)";
  29.             InputStream stream = null;
  30.             URLConnection conexion = null;
  31.             try {
  32.                 Log.d("video","preparamos  el url y la conexion");
  33.                 URL videoUrl = new URL(urlVideo);
  34.                 conexion = videoUrl.openConnection();
  35.                 Log.d("video","agregamos la cookie: " + cookieMU);
  36.                 conexion.setRequestProperty("Cookie", cookieMU);
  37.                 conexion.setRequestProperty("http.agent", userAgent);
  38.                 conexion.setRequestProperty("User-Agent", userAgent);
  39.                
  40.                 Log.d("video","Conectamos!!!");
  41.                 conexion.connect();
  42.                 int tamanio = conexion.getContentLength();
  43.                 Log.d("video","la data a recibir es de: " + (tamanio / 1024));
  44.                
  45.                 stream = conexion.getInputStream();
  46.                
  47.                 if (stream == null) {
  48.                     Log.d("video", "Streaming vacio!!!");
  49.                 }
  50.                
  51.                 Log.d("video","creamos el archivo temporal");
  52.                 File tmp = File.createTempFile("tmpVideo", "dat");
  53.                 String tmpPath = tmp.getAbsolutePath();
  54.                
  55.                 FileOutputStream out = new FileOutputStream(tmp);
  56.                 byte buff[] = new byte[1024];
  57.                
  58.                 Log.d("video","comenzamos a recibir data!!!");
  59.                 int recibido = 0;
  60.                 do {
  61.                     int numRead = stream.read(buff);
  62.                     if (numRead <= 0) {
  63.                         break;
  64.                     }
  65.                    
  66.                     out.write(buff,0,numRead);
  67.                    
  68.                     recibido = recibido + numRead;
  69.                     Log.d("video","recibido " + (recibido / 1024) + " de un total " + (tamanio / 1024));
  70.                 } while(true);
  71.                 Log.d("video","asignamos el archivo temporal al reproductor");
  72.                 video.setVideoPath(tmpPath);
  73.                 video.start();
  74.                
  75.                 stream.close();
  76.             } catch (MalformedURLException e) {
  77.                 // TODO Auto-generated catch block
  78.                 e.printStackTrace();
  79.             } catch (IOException e) {
  80.                 // TODO Auto-generated catch block
  81.                 e.printStackTrace();
  82.             } finally {
  83.                
  84.             }
  85.         }else {
  86.             Log.d("video","url del video nulo!!!");
  87.         }
  88.     }

En realidad "funciona" descarga la información y se crea el archivo temporal, pero al asignar el archivo al videoview es cuando "truena" la app

De antemano gracias por la ayuda
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #2 (permalink)  
Antiguo 12/02/2015, 07:14
 
Fecha de Ingreso: enero-2015
Mensajes: 205
Antigüedad: 9 años, 2 meses
Puntos: 18
Respuesta: Reproducción de vídeo bajo Streaming

ops, que peli, que buena pinta, a mi me gustaría hacer alguna app para bajar videos tipo
[URL="http://www.codigojavaoracle.com/android-2/tubemate-una-aplicacion-gratuita-y-muy-util-para-bajar-videos/"]tubemate, desde android[/URL] auqnue seo creo no te dejan subirlas al play store, parece que Google se enfada

Etiquetas: streaming, videoview, https
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:48.