Recientemente aprendí a agregar una pista de audio al video usando PHP-FFMPeg. Ahora quería agregar texto superpuesto al video. La herramienta de línea de comandos FFmpeg acepta drawtext
filtrar usando el libfreetype
biblioteca. El truco es, todo lo que es posible en el FFmpeg
la línea de comandos no es posible en PHP-FFMpeg
, pero este es definitivamente posible. Veamos cómo hacerlo ahora.
Antes de eso, echa un vistazo a la imagen de abajo.
Nota
Debe tener FFMpeg instalado en su sistema y debería haber sido configurado con –enable-libfreetype
.Paso 1:Cómo verificar FFMpeg configurado con la biblioteca libfreetype
#ffmpeg -version | grep libfreetype configuration: --prefix=/usr --extra-version='0york0~18.04.1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-nonfree --enable-libfdk-aac --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
Paso 2:Crear un filtro personalizado en PHP-FFMPeg
No pude encontrar ninguna implementación directa para agregar un texto superpuesto al video en PHP-FFMpeg o cualquier documentación relevante. Así que crearé un filtro personalizado para usar drawtext
filtro en PHP-FFMPeg como se muestra a continuación:
$command = "text='$text': fontfile=OpenSans-Regular.ttf: fontcolor=red: fontsize=80: box=1: [email protected]: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2:"; $video->filters()->custom("drawtext=$command");
Paso 3:Agregue texto superpuesto a video usando PHP-FFMPeg
A continuación se muestra el código completo para agregar un texto superpuesto al video. Asegúrate de que movie.mp4
y php-ffmpeg
están disponibles en la ruta donde se encuentra este archivo.
<?php require_once 'vendor/autoload.php'; $ffmpeg = FFMpeg\FFMpeg::create(); $format = new FFMpeg\Format\Video\X264(); $format->setAudioCodec("aac"); $videoFile='movie.mp4'; $captionStaticFilePath=$_SERVER['DOCUMENT_ROOT'].'/'; $outputFile='movie_output.mp4'; $text="Techglimpse.com"; $command = "text='$text': fontfile=OpenSans-Regular.ttf: fontcolor=red: fontsize=80: box=1: [email protected]: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2:"; try{ $video = $ffmpeg->open($captionStaticFilePath.$videoFile); $video->filters()->custom("drawtext=$command"); $video->save($format, $captionStaticFilePath.$outputFile); die('done'); }catch(Exception $e){ echo $e->getMessage();die; } ?>
¿Me encanta? Déjame saber tus comentarios.