Usando VideoView de streaming o descarga de vídeo progresivo
-
20-09-2019 - |
Pregunta
Estoy confundido acerca de cómo VideoView se puede utilizar para reproducir vídeo:. Desde un archivo local, como la descarga progresiva y streaming
este ejemplo funciona para mí (en 1.5 y 2.0 por lo menos) descargando el archivo y jugar de forma local.
Sin embargo, es necesario descargar el video antes de juego:? ¿Es posible reproducir vídeo como descarga progresiva, o descargándolo, simplemente mediante el uso setVideoPath o setVideoURI, como en VideoViewDemo en las muestras de API
El código VideoViewDemo sugiere el uso de setVideoURI para la transmisión, pero no estoy claro qué tipo de URL que debería usar. ¿Alguien tiene una URL de ejemplo para un vídeo que se puede transmitir al emulador de Android utilizando el código VideoViewDemo?
¿Puede la descarga progresiva puede utilizar con VideoViewDemo? Consigo un mensaje 'Lo sentimos, pero este video no se puede reproducir' usando setVideoPath con direcciones URL que funcionan bien con el ejemplo de blog vinculadas a arriba. (¿Es un problema en el emulador? He intentado 1.5 y 2.0.)
He encontrado una gran cantidad de ejemplos y documentación en línea, pero, hasta ahora, no hay nada que realmente responde a esta pregunta.
Solución
¿es posible reproducir vídeo como descarga progresiva, o descargándolo, simplemente mediante el uso setVideoPath o setVideoURI, como en VideoViewDemo en las muestras de API?
Se debería. Ciertamente funciona con MediaPlayer
y VideoView
es sólo un envoltorio línea ~ 200 alrededor MediaPlayer
y una SurfaceView
.
El código VideoViewDemo sugiere el uso de setVideoURI para la transmisión, pero no estoy claro qué tipo de URL que debería estar usando.
http://
y rtsp://
pueden trabajar, si el vídeo se ha codificado correctamente.
¿Alguien tiene una URL de ejemplo para una vídeo que se puede transmitir a la emulador de Android con la código VideoViewDemo?
Este video trabaja con MediaPlayer
, excepto en el Nexus One.
Editar . En realidad, ese enlace trabaja con el Nexus One, así
Otros consejos
Funciona para los casos simples, pero sólo cuando no está obligado a hacer algunos preparativos personalizados para solicitudes para obtener una corriente.
En este tutorial se muestra un ejemplo de emulación de transmisión de manual para un audio pero puede ser un poco refactorizado para reproducir vídeo:
(asegúrese de usar FileDescriptor
al establecer dataSource
, la API se ha cambiado ligeramente de aquellos tiempos).
VideoView sólo puede transmitir vídeos 3gp pero yo recomiendo este código para transmitir el vídeo
public void onCreate(Bundle savedInstanceState){
setContentView(R.layout.main);
String videourl = "http://something.com/blah.mp4";
Uri uri = Uri.parse(videourl);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.setDataAndType(uri, "video/mp4");
startActivity(intent);
}