J'ai récemment appris comment ajouter une piste audio à la vidéo à l'aide de PHP-FFMPeg. Maintenant, je voulais ajouter du texte superposé à la vidéo. L'outil de ligne de commande FFmpeg accepte drawtext filtrer en utilisant le libfreetype bibliothèque. Le hic, c'est que tout ce qui est possible dans le FFmpeg la ligne de commande n'est pas possible dans PHP-FFMpeg , mais celui-ci est tout à fait possible. Voyons maintenant comment procéder.
Avant cela, regardez l'image ci-dessous.
Noter
Vous devez avoir FFMpeg installé sur votre système et avoir été configuré avec –enable-libfreetype
.Étape 1 :Comment vérifier FFMpeg configuré avec la bibliothèque 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
Étape 2 :Créer un filtre personnalisé dans PHP-FFMPeg
Je n'ai trouvé aucune implémentation directe pour ajouter un texte de superposition à la vidéo dans PHP-FFMPeg ou toute documentation pertinente. Je vais donc créer un filtre personnalisé pour utiliser drawtext filtrez en PHP-FFMPeg comme indiqué ci-dessous :
$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");
Étape 3 :Ajoutez du texte superposé à la vidéo à l'aide de PHP-FFMPeg
Vous trouverez ci-dessous le code complet d'ajout d'un texte superposé à la vidéo. Assurez-vous que le movie.mp4 et php-ffmpeg sont disponibles dans le chemin où se trouve ce fichier.
<?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;
}
?> Aimer? Faites-moi part de vos commentaires.