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.