简体   繁体   English

在php中使用ffmpeg为视频添加水印

[英]Adding watermark to a video by using ffmpeg in php

I created a video with group of images and mp3.我创建了一个包含一组图像和 mp3 的视频。 But i want to add a watermark text to that video .i am using the below code to add the text.但我想向该视频添加水印文本。我正在使用以下代码添加文本。

exec('/usr/local/bin/ffmpeg -y -i output.mov -acodec libmp3lame -vcodec msmpeg4 \
-b:a 192k -b:v 1000k -ar 44100 \
-vf "drawtext=text=string1 string2 string3 string4 string5 string6 string7 :expansion=normal:fontfile=/usr/bin/DejaVuSerif-BoldItalic-webfont.ttf: y=0:x=h-(2*lh)-n: fontcolor=white: fontsize=40: box=1: boxcolor=0x00000000@1" \
-an IMG_0696.avi');

The issue with this is that the video file is creating with zero size.问题在于视频文件的大小为零。 Can any one help me please.任何人都可以帮助我。 Or else Suggest me any other command to add watermark text to video.或者建议我任何其他命令来向视频添加水印文本。 Thank you in advance...提前谢谢你...

ffmpeg -i movie.mp4 -i logo.png -filter_complex overlay output.mp4

I am using php-ffmpeg [Below : Composer Json]:我正在使用 php-ffmpeg [下面:Composer Json]:

{
    "require": {
        "php-ffmpeg/php-ffmpeg": "^0.6.1"
    }
}

and Using this php-ffmpeg library you can add watermark's using the following codes:并使用此 php-ffmpeg 库,您可以使用以下代码添加水印:

<?php

function processVideo($videoSource,$reqExtension, $watermark = "")
{
    $ffmpeg = FFMpeg\FFMpeg::create();

    $video = $ffmpeg->open($videoSource);

    $format = new FFMpeg\Format\Video\X264('libmp3lame', 'libx264');

    if (!empty($watermark))
    {
        $video  ->filters()
                ->watermark($watermark, array(
                    'position' => 'relative',
                    'top' => 25,
                    'right' => 50,
                ));
    }

    $format
    -> setKiloBitrate(1000)
    -> setAudioChannels(2)
    -> setAudioKiloBitrate(256);

    $randomFileName = rand().".$reqExtension";
    $saveLocation = getcwd(). '/video/'.$randomFileName;
    $video->save($format, $saveLocation);

    if (file_exists($saveLocation))
        return "http://localhost/test/video/$randomFileName";
    else
        return "http://localhost/test/thumb/404.png";

}

echo $videoLocation =  processVideo("sample.mp4","mp4","favicon.png");

?>

[Please, update the location according to your need.] [请根据您的需要更新位置。]

Command:命令:

    ffmpeg -i input.mp4 -i watermark.png -filter_complex 'overlay' output.mp4

Try this code in your controller.在您的控制器中尝试此代码。

  public function setWaterMark(Request $request_body){
      try {
        $watermark = Input::file('watermark');
        $input = Input::file('input');

        ffmpeg = "C:\\ffmpeg\\bin\\ffmpeg";
        $cmd = $ffmpeg . " -i " . $input . " -i " . $watermark . " -filter_complex 'overlay' " . $output_file;
        exec($cmd, $output);

        return $output_file;
  }
$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open('video.mpg');
$video
    ->filters()
    ->resize(new FFMpeg\Coordinate\Dimension(320, 240))
    ->synchronize();
$video
    ->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))
    ->save('frame.jpg');
$video
    ->save(new FFMpeg\Format\Video\X264(), 'export-x264.mp4')
    ->save(new FFMpeg\Format\Video\WMV(), 'export-wmv.wmv')
    ->save(new FFMpeg\Format\Video\WebM(), 'export-webm.webm');

Steps for install FFmpeg on system.在系统上安装 FFmpeg 的步骤。 http://drupalasia.com/article/how-add-watermark-video-using-php-and-ffmpeg http://drupalasia.com/article/how-add-watermark-video-using-php-and-ffmpeg

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM