PHP - Reproducir video en PHP

 
Vista:
Imágen de perfil de TheMac

Reproducir video en PHP

Publicado por TheMac (5 intervenciones) el 11/04/2017 02:06:12
Tengo escasos conocimientos en la programación con php, y necesito de su ayuda para poder llevar a buen puerto el siguiente poryecto.

Lo que me gustaría conseguir es poder reproducir los video que tengo almacenado en un directorio de mi servidor.

Por ahora lo unico que e conseguido hacer, es que se liste el contenido de dicho directorio en una paguina de mi servidor. Usando el siguiente codigo php.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
//Creamos Nuestra Función
function listFiles($directorio){ //La función recibira como parametro un directorio
if (is_dir($directorio)) { //Comprobamos que sea un directorio Valido
if ($dir = opendir($directorio)) {//Abrimos el directorio
 
echo '<ul>'; //Abrimos una lista HTML para mostrar los archivos
 
while (($archivo = readdir($dir)) !== false){ //Comenzamos a leer archivo por archivo
 
if ($archivo != '.' && $archivo != '..'){//Omitimos los archivos del sistema . y ..
 
$nuevaRuta = $directorio.$archivo.'/';//Creamos unaruta con la ruta anterior y el nombre del archivo actual 
 
echo '<li>'; //Abrimos un elemento de lista 
 
if (is_dir($nuevaRuta)) { //Si la ruta que creamos es un directorio entonces:
echo '<b>'.$nuevaRuta.'</b>'; //Imprimimos la ruta completa resaltandola en negrita
listFiles($nuevaRuta);//Volvemos a llamar a este metodo para que explore ese directorio.
 
} else { //si no es un directorio:
 
echo 'Video: '.$archivo; //simplemente imprimimos el nombre del archivo actual
 
}
 
'</li>'; //Cerramos el item actual y se inicia la llamada al siguiente archivo
 
}
 
}//finaliza While
echo '</ul>';//Se cierra la lista
 
closedir($dir);//Se cierra el archivo
}
}else{//Finaliza el If de la linea 12, si no es un directorio valido, muestra el siguiente mensaje
echo 'No Existe el directorio';
}
}//Fin de la Función	
 
//Llamamos a la función y le pasamos el nombre de nuestro directorio.
listFiles("/");
?>

Ahora lo que necesito hacer es que al pinchar sobre algunos de los videos mostrados en la pagina, me lleve a un segunda pagina donde se reproduzca el video seleccionado en la pagina anterior.

No se como continuar con esto...

Espero haberme explicado y que me podáis ayudar a llevar a llevar a buen puerto este proyecto personal.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 604
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Reproducir video en PHP

Publicado por Miguel (218 intervenciones) el 11/04/2017 02:35:09
Hola,
Hay varias formas, pero lo puedes hacer fácilmente con un control <video> en HTML. Tener en cuenta que el streaming de videos puede consumir muchos recursos de tu servidor.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de TheMac

Reproducir video en PHP

Publicado por TheMac (5 intervenciones) el 11/04/2017 03:19:40
Gracias por tu respuesta.

Ahora tengo dos archivos en mi servidor uno llamado videos.php que lista todos los videos contenido en le directorio y otro llamado reproductor.htm que contiene el reproductor de videos en s. Lo que me falta es algún método para llamar a reproductor.html cuando pinche en alguno de los videos listados en videos.php

Alguna ayuda con esto no tengo nada claro como seguir con esto ....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 604
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Reproducir video en PHP

Publicado por Miguel (218 intervenciones) el 11/04/2017 06:03:08
Bueno, pásalo con un POST::

videos.php (en los enlaces)
1
"reproductor.php?ruta=$rutaVideo";

reproductor.php
1
2
3
4
5
6
$rutaVideo = $_REQUEST['ruta'];
echo
   '<video width="100%" height="100%" controls>
       <source src="$rutaVideo" type="video/mp4">
       Your browser does not support the video tag.
   </video>';
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de TheMac

Reproducir video en PHP

Publicado por TheMac (5 intervenciones) el 11/04/2017 07:50:57
No consigo que funcione el código no muestra el enlace al archivo solo imprime el nombre del mismo en texto plano. No puedo hacer clic en le archivo y no puedo mandar la ruta del misma por POST a reproductor.php

1
2
echo 'Video: '.$archivo; //simplemente imprimimos el nombre del archivo actual
"reproductor.php?ruta=$rutaVideo"; Manda la ruta del archivo por POST a reproductor.php

Que tendría que añadir al código para crear el enlace con la ruta la video y poder reproducirlo en reproductor.php

Gracias por tu paciencia disculpa mi ignorancia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 604
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Reproducir video en PHP

Publicado por Miguel (218 intervenciones) el 12/04/2017 02:44:45
Bueno, pero tienes que colocarlo como un link:

1
echo "<a href='reproductor.php?ruta=$rutaVideo'>Video</a>";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de TheMac

Reproducir video en PHP

Publicado por TheMac (5 intervenciones) el 12/04/2017 03:54:37
Ahora si se genera el link y lo manda por post a reproductor.php

Pero el video no llega a reproducirse el enlace que se a mandado a reproductor.php esta vacío no contiene la ruta del video....

1
https://1.../reproductor.php?ruta=.....


Que podría hacer para solucionar esto ..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Reproducir video en PHP

Publicado por kip (877 intervenciones) el 12/04/2017 04:27:19
Hola, creo que Miguel te ha dado todo para que puedas hacerlo y aun asi no lo has logrado...

Veamos primero tu funcion que muestra:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
// Creamos Nuestra Función
function listFiles($directorio) { //La función recibira como parametro un directorio
    if (is_dir($directorio)) { //Comprobamos que sea un directorio Valido
        if ($dir = opendir($directorio)) { //Abrimos el directorio
            echo '<ul>'; //Abrimos una lista HTML para mostrar los archivos
            while (($archivo = readdir($dir)) !== false) { //Comenzamos a leer archivo por archivo
                if ($archivo != '.' && $archivo != '..') { //Omitimos los archivos del sistema . y ..
                    $nuevaRuta = $directorio . $archivo . '/'; //Creamos unaruta con la ruta anterior y el nombre del archivo actual
                    echo '<li>'; //Abrimos un elemento de lista
                    if (is_dir($nuevaRuta)) { //Si la ruta que creamos es un directorio entonces:
                        echo '<b>' . $nuevaRuta . '</b>'; //Imprimimos la ruta completa resaltandola en negrita
                        listFiles($nuevaRuta); //Volvemos a llamar a este metodo para que explore ese directorio.
                    } else { //si no es un directorio:
                        echo 'Video: ' . $archivo; //simplemente imprimimos el nombre del archivo actual
                    }
                    '</li>'; //Cerramos el item actual y se inicia la llamada al siguiente archivo
                }
            } //finaliza While
            echo '</ul>'; //Se cierra la lista
            closedir($dir); //Se cierra el archivo
        }
    } else { //Finaliza el If de la linea 12, si no es un directorio valido, muestra el siguiente mensaje
        echo 'No Existe el directorio';
    }
} //Fin de la Función
// Llamamos a la función y le pasamos el nombre de nuestro directorio.
listFiles("/");
?>

Veo que haces un echo de $archivo (por cierto $rutaVideo Miguel la coloco como un ejemplo para qur te guies y la crees ! ya que no la veo definida aqui), eso esta correcto, lo que no se es si esta variable te muestra la ruta completa del archivo o solo el nombre, ya que para poder enviarlo por la url debera ser el path correcto para que pueda reproducirse, quizas para ello debas hacer lo siguiente basandome en lo que Miguel te comento:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
// Creamos Nuestra Función
function listFiles($directorio) { //La función recibira como parametro un directorio
    if (is_dir($directorio)) { //Comprobamos que sea un directorio Valido
        if ($dir = opendir($directorio)) { //Abrimos el directorio
            echo '<ul>'; //Abrimos una lista HTML para mostrar los archivos
            while (($archivo = readdir($dir)) !== false) { //Comenzamos a leer archivo por archivo
                if ($archivo != '.' && $archivo != '..') { //Omitimos los archivos del sistema . y ..
                    $nuevaRuta = $directorio . $archivo . '/'; //Creamos unaruta con la ruta anterior y el nombre del archivo actual
                    echo '<li>'; //Abrimos un elemento de lista
                    if (is_dir($nuevaRuta)) { //Si la ruta que creamos es un directorio entonces:
                        echo '<b>' . $nuevaRuta . '</b>'; //Imprimimos la ruta completa resaltandola en negrita
                        listFiles($nuevaRuta); //Volvemos a llamar a este metodo para que explore ese directorio.
                    } else { //si no es un directorio:
                        $rutaVideo = urlencode($nuevaRuta . $archivo);
                        echo 'Video: ' . $archivo; //simplemente imprimimos el nombre del archivo actual
                        echo "<a href='reproductor.php?ruta=$rutaVideo'>Ver video</a>";
                    }
                    echo '</li>'; //Cerramos el item actual y se inicia la llamada al siguiente archivo
                }
            } //finaliza While
            echo '</ul>'; //Se cierra la lista
            closedir($dir); //Se cierra el archivo
        }
    } else { //Finaliza el If de la linea 12, si no es un directorio valido, muestra el siguiente mensaje
        echo 'No Existe el directorio';
    }
} //Fin de la Función
// Llamamos a la función y le pasamos el nombre de nuestro directorio.
listFiles("/");
?>

Si te fijas he agregado dos lineas:

1
$rutaVideo = urlencode($nuevaRuta.$archivo);

Que lo que hara sera definir la variable con la ruta del archivo y codifcarla para que no tengas problemas al pasarla por la url con ciertos caracteres especiales.

Y lo que te comento Miguel, un link al archivo PHP que recibira la ruta del video:

1
echo "<a href='reproductor.php?ruta=$rutaVideo'>Ver video</a>";

Luego en reproductor.php debes hacer lo siguiente:

1
$rutavideo = rawurldecode($_GET['ruta']);

Y mas abajo lo que te comento Miguel:

1
2
3
4
printf('<video width="100%" height="100%" controls>
       		<source src="%s" type="video/mp4">
       		Your browser does not support the video tag.
   		</video>', $rutavideo);

Quizas asi funcione, de todas formas nos cuentas si te da algun error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de TheMac

Reproducir video en PHP

Publicado por TheMac (5 intervenciones) el 12/04/2017 06:43:25
Gracias por vuestra ayuda y paciencia.

Ahora si que da el enlace completo con el path. Pero al pulsar sobre el enlace, la pagina reproductor.php se queda en blanco. No carga el reproductor ni el video seleccionado.....
Que estoy haciendo mal :(



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
	//Creamos Nuestra Función
	function listFiles($directorio){ //La función recibira como parametro un directorio
		if (is_dir($directorio)) { //Comprobamos que sea un directorio Valido
			if ($dir = opendir($directorio)) {//Abrimos el directorio
				echo '<ul>'; //Abrimos una lista HTML para mostrar los archivos
				while (($archivo = readdir($dir)) !== false){ //Comenzamos a leer archivo por archivo
					if ($archivo != '.' && $archivo != '..'){//Omitimos los archivos del sistema . y ..
						$nuevaRuta = $directorio.$archivo.'/';//Creamos unaruta con la ruta anterior y el nombre del archivo actual 
						echo '<li>'; //Abrimos un elemento de lista 
						if (is_dir($nuevaRuta)) { //Si la ruta que creamos es un directorio entonces:
							echo '<b>'.$nuevaRuta.'</b>'; //Imprimimos la ruta completa resaltandola en negrita
							listFiles($nuevaRuta);//Volvemos a llamar a este metodo para que explore ese directorio.
						} else { //si no es un directorio:
							$rutaVideo = urlencode($nuevaRuta.$archivo); //Variable con la ruta del archvo 
							echo 'Video: '.$archivo; //simplemente imprimimos el nombre del archivo actual
							echo "<a href='reproductor.php?ruta=$rutaVideo'>Reproducir video</a>"; // Mandamos la ruta a reproductor.php
						}
						'</li>'; //Cerramos el item actual y se inicia la llamada al siguiente archivo
					}
				}//finaliza While
				echo '</ul>';//Se cierra la lista
				closedir($dir);//Se cierra el archivo
			}
		} else {//Finaliza el If de la linea 12, si no es un directorio valido, muestra el siguiente mensaje
			echo 'No Existe el directorio';
		}
	}//Fin de la Función	
//Llamamos a la función y le pasamos el nombre de nuestro directorio.
listFiles("/home/Video");
?>

1
2
3
4
5
6
7
8
9
<?php
$rutavideo = rawurldecode($_GET['ruta']);
 
printf('<video width="100%" height="100%" controls>
       		<source src="%s" type="video/mp4">
       		Your browser does not support the video tag.
   		</video>', $rutavideo);
 
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar