¿Cuál es la mejor manera de calcular la longitud del archivo flv usando php sin dependencias externas como ffmpege porque el sitio del cliente se ejecuta en el alojamiento compartido, itry http://code.google.com/p/flv4php/, pero extrae metadatos y no todos los videos contienen metadatos?calcular la longitud del archivo de video flv? usando php puro
Respuesta
Hay una forma no demasiado complicado de hacer eso.
Los archivos FLV tienen una estructura de datos específica que les permite ser analizados en orden inverso, suponiendo que el archivo está bien formado.
Simplemente abre el archivo y busca 4 bytes antes del final del archivo.
Obtendrá un gran valor endian de 32 bits que representa el tamaño de la etiqueta justo antes de estos bytes (los archivos FLV están hechos de etiquetas). Puede usar la función unpack
con la especificación de formato 'N'.
Luego, puede buscar la cantidad de bytes que acaba de encontrar, lo que le lleva al comienzo de la última etiqueta del archivo.
La etiqueta contiene los siguientes campos:
de señalización del tipo de la etiqueta- un byte, menos 11 ... si no, algo está mal)
- un número entero grande de 24 bits que representa la marca de tiempo de la etiqueta en el archivo, en milisegundos, más un entero de 8 bits que extiende la marca de tiempo a 32 bits.
Así que todo lo que tiene que hacer es omitir los primeros 32 bits y descomprimir ('N', ...) el valor de la marca de tiempo que lea.
Como la duración de la etiqueta de FLV suele ser muy corta, debería dar una duración bastante precisa para el archivo.
Aquí hay un código de ejemplo:
$flv = fopen("flvfile.flv", "rb");
fseek($flv, -4, SEEK_END);
$arr = unpack('N', fread($flv, 4));
$last_tag_offset = $arr[1];
fseek($flv, -($last_tag_offset + 4), SEEK_END);
fseek($flv, 4, SEEK_CUR);
$t0 = fread($flv, 3);
$t1 = fread($flv, 1);
$arr = unpack('N', $t1 . $t0);
$milliseconds_duration = $arr[1];
Los dos últimos fseek puede factorizar, pero ambos dejaron para mayor claridad.
Editar: Se corrigió el código después de algunas pruebas
estudiaré su respuesta, gracias – shox
- 1. obtener longitud de video flv
- 2. ¿Cómo servir archivos .flv usando PHP?
- 3. Obteniendo la longitud del video
- 4. Calcular ancho y alto de Flv y Swf usando C#
- 5. Crear archivo de video usando PHP
- 6. Calcular la longitud del contenido de POST
- 7. Análisis del encabezado FLV (duración) del archivo remoto en Java
- 8. Convierta programáticamente un video a FLV
- 9. Cargar un archivo binario usando JavaScript puro
- 10. Cómo obtener la duración del video de mp4, wmv, flv, mov videos
- 11. Comprobar la longitud del campo usando awk
- 12. ¿El progreso de carga usando PHP/AJAX puro?
- 13. Reproducción de video a través del sitio web - .FLV vs .MP4 & .OGV
- 14. Cliente PHP puro torrente?
- 15. ¿Generar la imagen de vista previa del archivo de video?
- 16. Cómo convertir archivos de video MP4 en formato FLV usando FFMPEG
- 17. Cómo puedo asegurar el video mp4 y flv
- 18. Cómo determinar la longitud del contenido de un archivo descomprimido?
- 19. Cómo convertir flv a avi usando ffmpeg de alta calidad
- 20. Calcular la longitud de la ruta entre los nodos?
- 21. ¿Cómo conectarse con la base de datos del lado del servidor usando html5 puro?
- 22. Obtener la longitud de un archivo de audio php
- 23. longitud máxima del nombre del archivo
- 24. Obtiene la variable del archivo PHP usando JQuery/AJAX
- 25. Pago del repositorio de git en PHP puro
- 26. Delphi Descargar Video de Internet usando URLDownloadToFile
- 27. Calcular el ancho del texto con PHP GD
- 28. Librerías de decodificación/codificación de video Java puro
- 29. ¿Cómo calcular la longitud euclidiana de una matriz sin bucles?
- 30. ¿Cómo puedo detectar la duración del archivo de video en minutos con PHP?
¿Te refieres a la duración del video en minutos/segundos? –
sí, eso es lo que quiero decir .. – shox
La especificación está aquí: http://www.adobe.com/devnet/flv/pdf/video_file_format_spec_v10.pdf No se puede deshacer a través de ella, pero no es una tarea trivial. – Wrikken