Di recente ho imparato come aggiungere una traccia audio al video utilizzando PHP-FFMpeg. Ora volevo aggiungere del testo in sovrimpressione al video. Lo strumento da riga di comando FFmpeg accetta drawtext
filtra usando il libfreetype
biblioteca. Il problema è che tutto ciò che è possibile nel FFmpeg
la riga di comando non è possibile in PHP-FFMpeg
, ma questo è sicuramente possibile. Vediamo come farlo ora.
Prima di ciò, dai un'occhiata all'immagine qui sotto.
Nota
Devi avere FFMpeg installato sul tuo sistema e dovrebbe essere stato configurato con –enable-libfreetype
.Fase 1:Come verificare FFMpeg configurato con la libreria 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
Fase 2:crea un filtro personalizzato in PHP-FFMpeg
Non sono riuscito a trovare alcuna implementazione diretta per l'aggiunta di un testo sovrapposto al video in PHP-FFMpeg o qualsiasi documentazione pertinente. Quindi creerò un filtro personalizzato per utilizzare drawtext
filtro in PHP-FFMpeg come mostrato di seguito:
$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");
Fase 3:aggiungi testo in sovrimpressione al video usando PHP-FFMpeg
Di seguito è riportato il codice completo per aggiungere un testo in sovrimpressione al video. Assicurati che il movie.mp4
e php-ffmpeg
sono disponibili nel percorso in cui si trova questo file.
<?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; } ?>
Lo adoro? Fatemi sapere i vostri commenti.