Question: What is drawtext on video?
Adding the single line text/multiple line text over the video.
Question: Can we change the font-size of text?
Yes, we can change the color, size, font family etc of text in videos.
Question: How to add text on videos?
ffmpeg -i myvideo.mp4 -vf drawtext="fontfile=OpenSans-Bold.ttf: text=this is text on videos: fontcolor=white: fontsize=120: box=1: boxcolor=black@0.5: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2" -codec:a copy output_video.mp4
Note: OpenSans-Bold.ttf file must available (with parallel to video i.e myvideo.mp4)
Question: How to multiple line text on videos?
ffmpeg -i myvideo.mp4 -vf "[in]drawtext=fontfile=OpenSans-Bold.ttf: text=Arun kumar: fontcolor=white: fontsize=20: box=1: boxcolor=black@0.5: boxborderw=5: x=100: y=100 drawtext=fontfile=OpenSans-Bold.ttf: text='Kuldeep ': fontcolor=white: fontsize=20: box=1: boxcolor=black@0.5: boxborderw=5: x=100: y=400[output]" -codec:a copy output_video.mp4
Note: OpenSans-Bold.ttf file must available (with parallel to video i.e myvideo.mp4)
Question: How to add text in video with PHP?
- You must have installed PHP-FFMPEG
php composer.phar require php-ffmpeg/php-ffmpeg
If not, you can check https://www.web-technology-experts-notes.in/2017/10/how-to-install-ffmpeg-in-wamp-server-in-windows7.html - To achieve this, you need to use the ffmpeg filters.
-
require_once 'ffmpeglib/vendor/autoload.php'; $ffmpeg = FFMpeg\FFMpeg::create(); $format = new FFMpeg\Format\Video\X264(); $format->setAudioCodec("aac"); $videoFile='myvideo.mp4'; $captionStaticFilePath='';//directory path $captionStaticFilePath=$_SERVER['DOCUMENT_ROOT'].'/video/'; /////////////// Debug //////////////////////////// /*$ffmpeg->getFFMpegDriver()->listen(new \Alchemy\BinaryDriver\Listeners\DebugListener()); $ffmpeg->getFFMpegDriver()->on('debug', function ($message) { echo $message; });*/ /////////////// Debug //////////////////////////// /* Filter the text correctly*/ $captionJSON=json_decode('["text=This is caption text: fontfile=OpenSans-Regular.ttf: x=384: y=10: fontcolor=#ffffff: fontsize=24px","text=This is clip 2 - Samik das: fontfile=OpenSans-Bold.ttf: x=404.08331298828125: y=34.91668701171875: fontcolor=#ffffff: fontsize=24px: fonttype=bold"]'); $captionArray=array(); if(!empty($captionJSON) && !empty($captionJSON)){ foreach($captionJSON as $caption){ //String to array $caption=str_replace(':', '&', $caption); parse_str($caption, $output); //pr($output);die; unset($output['fonttype']); $output['fontsize']=str_replace('px','',$output['fontsize']); $output['fontfile']=$captionStaticFilePath.$output['fontfile']; $output['x'] = (int)$output['x']; $output['y'] = (int)$output['y']; //Array to string $outputStr=''; $counter=0; foreach($output as $i=>$v){ if($counter){ $outputStr.= ': '; } $outputStr.= $i.'='.$v; $counter++; } //Update to array $captionArray[]=$outputStr; } } /* Filter the text correctly*/ try{ $video = $ffmpeg->open($captionStaticFilePath.$videoFile); $command=''; if(!empty($captionArray)){ $command='[in]'; foreach($captionArray as $index=>$captionComand){ if($index>0){ $command= $command.','; } $command= $command.'drawtext='.$captionComand; } $command.='[out]'; } //nOW execute the command $video->filters()->custom($command); $captionFile='caption_'.$videoFile; //Save the video with caption $video->save($format, $captionStaticFilePath.$captionFile); die('done'); }catch(Exception $e){ echo $e->getMessage();die; }
Question: How to add debugging in php-ffmpeg?
Just add below code after the initialize the ffmpeg object.
$ffmpeg->getFFMpegDriver()->listen(new \Alchemy\BinaryDriver\Listeners\DebugListener()); $ffmpeg->getFFMpegDriver()->on('debug', function ($message) { echo $message; });
Question: Share Few useful urls for drawtext?
https://www.ffmpeg.org/ffmpeg-all.html#fade
https://ffmpeg.org/ffmpeg-filters.html