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

时间:2013-10-14 09:14:45

标签: php video ffmpeg

我创建了一组包含图像和mp3的视频。 但我想在该视频中添加水印文字。我正在使用以下代码添加文字。

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');

这个问题是视频文件创建的大小为零。 任何人都可以帮助我。 或者建议我添加水印文本到视频的任何其他命令。 提前谢谢你......

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

我正在使用php-ffmpeg [下图:Composer Json]:

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

并使用此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");

?>

[请根据您的需要更新位置。]

答案 2 :(得分:0)

命令:

NaN

在您的控制器中尝试此代码。      

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

答案 3 :(得分:-1)

$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');

在系统上安装FFmpeg的步骤。 https://github.com/kubernetes/minikube/blob/master/docs/contributors/minikube_iso.md