2009-08-21 16 views

Respuesta

1

¿Tiene problemas para descargar el encabezado o analizarlo? si se trata de la descarga a continuación, utilizar este código:

URL url = new URL(fileUrl); 
InputStream dis = url.openStream(); 
byte[] header = new byte[HEADER_SIZE]; 
dis.read(header); 

Usted puede envolver InputStream con DataInputStream si desea leer int del lugar de bytes.

Después de eso basta con mirar el método getInfo desde PHP-FLV Info o leer las especificaciones.

+0

que tenía una combinación de ambos. Sin embargo, dado que he visto la especificación, la mejor pregunta fue la mejor forma de descargar parte del archivo y luego analizar el encabezado. Experimenté enviando el encabezado del rango HTTP para decir cuántos bytes quería, pero solo algunos servidores envían contenido parcial HTTP 206 para que tu solución sea mejor. Gracias! –

+0

OK, si tiene preguntas sobre el análisis, simplemente edite la pregunta. –

+1

InputStream.read no necesariamente se lee completamente. Para una solución fácil, ajuste 'DataInputStream' y llame a' readFully'. –

0

Como the-alchemist estados en this other question:

El Red5 project tiene una clase llamada FLVReader, que hace lo que quiere. Tiene licencia LGPL.

Lo he probado y funciona bien. Lo necesitará bibliotecas:

Conseguir la duración del vídeo FLV es tan simple como esto:

FLVReader flvReader = new FLVReader(...); // Can use a File or a ByteBuffer as input 
long duration = flvReader.getDuration(); // Returns the duration in milliseconds 
Cuestiones relacionadas