Lista de archivos media para VLC Media Player desde servidor local
Hola muchachos en esta ocasión quiero compartirles un código al que le dediqué unas horas solo por calmar mi necesidad de aprender cosas nuevas.
Encontré que un archivo de texto M3U me permite cargar una lista de reproducción de archivos y que los recursos pueden ser direcciones web por lo que me puse a esto, a continuación describiré lo que hice.
Los pasados días estuve instalando varias aplicaciones para hacerme a un Media Center en casa, debido a que la mayoría de aplicativos son bastante pesados quedé muy descepcionado y seguí buscando otras opciones por lo que se me ocurrió utilizar VLC como servidor de medios lo cual no fué sencillo y por esta razón decidí crear una lista dinámica de mi carpeta de descargas que mi cliente VLC sea capaz de leer cada vez que accedo a este recurso.
Encontré que un archivo de texto M3U me permite cargar una lista de reproducción de archivos y que los recursos pueden ser direcciones web por lo que me puse a esto, a continuación describiré lo que hice.
- Instalar mi servidor web, realicé la instalación de un servidor AMP (Apche, Mysql, PHP) que me permite tener un servidor web Apache y le adiciona PHP; usé XAMPP que es uno de los que más conozco y modifiqué para que me creara un "alias" que redirecciona a mi directorio de descargas. En el archivo de configuracion "httpd.conf" agregué el siguiente bloque de código:
Alias /peliculas "D:/Descargas/Peliculas/"
<Directory "D:/Descargas/Peliculas">
Options Indexes FollowSymLinks Includes ExecCGI
Allow from all
AllowOverride All
Require all granted
</Directory>
- Dentro demi carpeta creé un archivo index.php con el siguiente código:
#EXTM3U
<?php
// Carpeta en donde se encuentran mis archivos multimedia
define("Maindir", "D:\\Descargas\\Peliculas");
listFiles(Maindir);
function listFiles($dir) {
$base_url = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http');
$base_url .= '://' . $_SERVER['HTTP_HOST'];
$base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']),'' , $_SERVER['SCRIPT_NAME']);
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if(valido($file)) {
if(is_file($file) && strpos(substr($file, -4),".")===0) {
echo '
#EXTINF:-1,' . str_replace(Maindir, "", $file) . '
' . $base_url . $file . '
';
} else {
listFiles($dir . DIRECTORY_SEPARATOR . $file);
}
}
}
closedir($dh);
}
}else {
if(valido($dir)) {
echo '
#EXTINF:-1,' . str_replace(Maindir, "", $dir) . '
' . $base_url . str_replace(DIRECTORY_SEPARATOR, "/", str_replace(Maindir . DIRECTORY_SEPARATOR, "", $dir)) . '
';
}
}
}
// Función que descarta los archivos que no quiero listar
// En mayusculas evalúo los ultimos cuatro caracteres del nombre
function valido($file){
$res = FALSE;
if( $file!="." && $file!= ".."
&& strtoupper(substr($file, -4))!= ".PHP"
&& strtoupper(substr($file, -4))!= ".NFO"
&& strtoupper(substr($file, -4))!= ".TXT"
&& strtoupper(substr($file, -4))!= ".URL"
&& strtoupper(substr($file, -4))!= ".BUP"
&& strtoupper(substr($file, -4))!= ".IFO"
&& strtoupper(substr($file, -4))!= ".XLS"
&& strtoupper(substr($file, -4))!= ".DOC"
&& strtoupper(substr($file, -4))!= ".PPT"
&& strtoupper(substr($file, -4))!= ".COM"
&& strtoupper(substr($file, -4))!= ".BAT"
&& strtoupper(substr($file, -4))!= "XLSX"
&& strtoupper(substr($file, -4))!= "DOCX"
&& strtoupper(substr($file, -4))!= "PPTX"
&& strtoupper(substr($file, -4))!= "INFO"
) {
$res = TRUE;
}
return $res;
}
?> - Una vez el servidor está iniciado y tenemos nuestro archivo index.php completo, podemos desde nuestro VLC acceder a solicitar una direccion URL
Comentarios