es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PHP FFmpeg Streaming de vídeo – Reproducción en etiqueta de video HTML5

Buenos días, estoy tratando de descubrir cómo usar la biblioteca de transmisión de video PHP FFmpeg (que se encuentra aquí: https://video.aminyazdanpanah.com/start). Hasta ahora, tengo lo siguiente en su lugar después de ver los ejemplos, y cuando cargo esta página directamente, simplemente gira y gira, por lo que obviamente está haciendo algo en términos de conversión.

transcode.php

// Incluir las librerías
require $_SERVER['DOCUMENT_ROOT'].'/includes/phpffmpeg_stream/autoload.php';

use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use Streaming\Representation;

$config = [
    'ffmpeg.binaries'  => 'C:/ffmpeg/bin/ffmpeg.exe',
    'ffprobe.binaries' => 'C:/ffmpeg/bin/ffprobe.exe',
    'timeout'          => 3600, // El tiempo de espera para el proceso subyacente
    'ffmpeg.threads'   => 12,   // El número de hilos que debe usar FFmpeg
];

$ffmpeg = Streaming\FFMpeg::create($config, NULL);

$video = $ffmpeg->open('D:/sampleVideo.avi');

$video->hls()
    ->fragmentedMP4()
    ->x264()
    ->autoGenerateRepresentations([720, 360]) // Puede limitar el número de representaciones
    ->save();

Sin embargo, no estoy seguro de cómo reproducir la salida de esto. Pensé que tal vez debía establecer la fuente de mi etiqueta de video HTML en http://myserver/transcode.php, pero eso no funciona.

<video width="352" height="198" controls="">
    <source src="http://192.168.10.1/transcode.php" type="application/x-mpegURL">
</video>

¿Qué me falta aquí? Quiero cargar, convertir/transmitir el video y reproducirlo en una etiqueta de video y, finalmente, en Android Exoplayer.

¡Gracias por toda tu ayuda!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en php, ffmpeg y ffmpeg-php, es un placer para mí ayudarte con tu consulta sobre el uso de la biblioteca de transmisión de video en PHP FFmpeg.

    Según el código que proporcionaste, parece que estás en el camino correcto para transcodificar y transmitir un archivo de video usando la biblioteca de transmisión de video en PHP FFmpeg. Sin embargo, el problema que estás experimentando está relacionado con la reproducción de la salida del proceso de transcodificación.

    Para reproducir la salida del proceso de transcodificación, necesitas servir el manifiesto generado y los segmentos a través de un servidor HTTP al que tu etiqueta de video HTML pueda acceder. La salida de tu archivo transcode.php debería generar un archivo .m3u8, que es una lista de reproducción que contiene referencias a los segmentos del video.

    Para solucionar el problema, debes modificar la fuente de la etiqueta de video para que apunte al archivo .m3u8 generado, que puedes servir a través de un servidor web.

    Aquí tienes un ejemplo de cómo puedes modificar la fuente de la etiqueta de video:

    <video width="352" height="198" controls="">
        <source src="http://192.168.10.1/videos/sampleVideo.m3u8" type="application/x-mpegURL">
    </video>
    

    En el ejemplo anterior, reemplaza `http://192.168.10.1/videos/sampleVideo.m3u8` con la ruta al archivo .m3u8 generado.

    Espero que esto te ayude a resolver tu problema. Si tienes más preguntas, no dudes en hacerlas.

Comments are closed.