Pregunta

Necesito crear algo que comience a enviar un video codificado H.264 a un reproductor flash a la mitad del archivo (para permitir saltar a un punto del video que aún no se ha almacenado en el búfer).

Actualmente, los vídeos están en formato contenedor FLV, pero la transcodificación es una opción.Logré reescribir el encabezado del archivo y la información de metadatos para un desplazamiento de bytes determinado.Esto funciona para vídeos más antiguos, pero no para archivos codificados en H.264.Sospecho que esto se debe a que las etiquetas de vídeo dentro del archivo también deben modificarse, lo cual no es factible (requeriría demasiada potencia de procesamiento).

¿Cuál es la forma "correcta" de hacerlo?

¿Fue útil?

Solución

El reproductor flash solo puede comenzar a reproducir video H.264 una vez que haya descargado el átomo MOOV.Los proveedores de pseudo-streaming existentes simplemente le brindan un encabezado FLV (ya sea los primeros 13 bytes del archivo o uno codificado) y luego entregan el archivo desde el desplazamiento dado.Si desea crear un pseudo-streamer H.264, deberá generar el encabezado FLV, luego un átomo MOOV y luego servir el resto del archivo desde el desplazamiento dado.Si no utiliza un contenedor FLV, no necesitará el encabezado FLV, pero sí necesitará el átomo MOOV.

Desafortunadamente, no creo que puedas usar el átomo MOOV del archivo en el disco;la información que contiene no será adecuada para el fragmento de archivo que entrega.Por lo tanto, tendría que analizar el átomo existente y generar uno propio que fuera apropiado para la parte servida del archivo.

Si hay estructuras complicadas dentro del archivo H.264, la pseudotransmisión podría ser aún más complicada.Si analizar el archivo no es posible, me temo que es posible que no pueda transmitir en pseudotransmisión sus medios.

Otros consejos

@yoavf: creo que el OP está interesado en los aspectos del lado del servidor de la transmisión h.264 bajo demanda dentro de archivos FLV.Creo que la reutilización de los reproductores existentes sería buena para él.¿O tal vez son mis propias necesidades las que salen a la luz?<:S

Del segundo enlace de yoavf, hay otro enlace al de Tinic Uro ¿Qué acaba de pasar con los vídeos en la web? .Una cita relevante:

¿Será posible colocar secuencias H.264 en la estructura de archivos FLV tradicional?Lo será, pero recomendamos encarecidamente a todos que adopten el nuevo formato de archivo estándar.Existen límites funcionales con la estructura FLV al transmitir H.264 que no podríamos superar sin un rediseño del formato de archivo.Ésta es una de las razones por las que nos estamos alejando de la estructura de archivos FLV tradicional.Tratar específicamente los encabezados y finales de secuencia es complicado con las transmisiones FLV.

Entonces, parece que uno puede jugar con la codificación ffmpeg (si así es como obtiene sus FLV, como yo) o puede ingresar al nuevo formato.Mmmmm....

dos cosas que puedes hacer:

1) use lighttpd y su complemento de transmisión de mp4 que generará el contenedor de transmisión requerido sobre la marcha

2) cree un FLV con fotograma clave y utilice un script de psuedo-streaming (como XMOOV) para transmitir su archivo.

Si necesita mp4/aac, puede simplemente ponerlos dentro del contenedor FLV, para disgusto de Adobe, pero funciona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top