Fichero .dav ¿Qué es y cómo reproducirlo?

Esta mañana me encontraba con un problema: un cliente preguntaba cómo podría reproducir un fichero .dav en su equipo. Vayamos por partes

¿Qué es un fichero .dav?

Es un fichero de vídeo procedente de un grabador de una cámara de seguridad, probablemente de un DVR365. Siendo así ¿por qué no se puede reproducir en un reproductor de vídeo standar? Porque aunque en principio el vídeo se comprime y digitaliza en formato MPEG este fichero tiene una modificación para que el vídeo esté cifrado, por cuestiones de seguridad.

¿Cómo lo reproduzco?

Si tienes este fichero seguramente es porque tienes una cámara de seguridad, y seguramente el fabricante ya ta habrá proporcionado un software para reproducir dicho fichero (si en efecto es el DVR365 podrías buscarlo aquí). En caso de que no lo tengas por algún motivo, o de que no haya una versión para tu sistema operativo, puedes descargarte un reproductor alternativo. Una opción es el Amcrest Smart Player, que incluso te permite convertir el formato a AVI, tiene versiones para MAC y PC. Otra opción es el 5KPlayer, disponible también para PC y para Mac

Voy a añadir también un vídeo donde se nos explica cómo podemos utilizar el popular VLC Player para reproducir ficheros .dav, aunque ya adelanto que no lo he probado y no puedo asegurar qué tal funciona:


Leer ficheros de texto con PHP

Uno de esos posts a petición de un lector: ¿cómo leer un fichero de texto con PHP? Bueno, a día de hoy no es una práctica muy usada, tal vez sea algo que suena más a tiempos pasados, pero hace año y pico en un trabajo por ejemplo tuve que hacerlo (y no veáis la lata que daba tratar los datos cuando una tabla de MySQL habría ahorrado muchísimo trabajo, pero eso es otra historia).

Bueno, para leer un fichero debemos usar la función fopen(), pasándole como primer parámetro la dirección del fichero a abrir y como segundo el modo (para lectura r, para escritura w).

Entonces, para leer fopen(“archivo.txt”, “r”), y ahora tenemos dos opciones: cargar todo el contenido de golpe o ir leyendo línea a línea.

Para cargar todo el contenido de golpe la cosa sería más o menos así:

function leer_completo($direccion_fichero){
   $fichero = fopen ($direccion_fichero, "r");   
   $contenido = fread($fichero, filesize($direccion_fichero));
   return $contenido;
} 

Esto devolvería una variable con todo el contenido del fichero. Para la lectura línea a línea en cambio necesitaremos un bucle y la función fgets() en lugar de fread().


<?php
$gestor = @fopen("/tmp/inputfile.txt", "r");
if ($gestor) {
    while (($búfer = fgets($gestor, 4096)) !== false) {
        echo $búfer;
    }
    if (!feof($gestor)) {
        echo "Error: fallo inesperado de fgets()\n";
    }
    fclose($gestor);
}
?>

En este caso ya os pego el ejemplo que aparece en la web oficial de php. En ese caso se especifica a fgets() el parámetro del tamaño a leer. Y es que puedes especificarle el tamaño de bloque que debe hacer en cada lectura o, por el contrario, no pasarle ningún parámetro y que lea hasta el final de línea. Esto último puede dar problemas con archivos creados en un Mac, pero se puede solventar activando la opcion en tiempo de ejecución auto_detect_line_endings.

Otro día, si queréis, hablamos de csv, o de escritura… estoy abierto a sugerencias.