使用 ffmpeg 和 PHP 向转换后的视频添加徽标或水印

Add logo or watermark to Converted video using ffmpeg and PHP

我们正在使用 FFMPEG 将视频转换为 MP4。

我们做了很多研究,但是我们无法弄清楚如何将公司徽标作为徽标或水印添加到转换后的视频中

PHP代码

<?php 
$uploads_dir = 'original/';
$file_name = basename($_FILES['file']['name']);
$output_name = explode('.', $file_name)[0];
$uploaded_file = $uploads_dir . $file_name;
$convert_status = ['mp4' => 0, 'webm' => 0];

if(isset($_POST['submit'])) {
  if(move_uploaded_file($_FILES['file']['tmp_name'], $uploaded_file)) {
    // Make sure to get the correct path to ffmpeg
    // Run $ where ffmpeg to get the path
    $ffmpeg = '/bin/ffmpeg';
    
    // MP4
    $video_mp4 = $output_name . '.mp4';
    exec($ffmpeg . ' -i "' . $uploaded_file . '" -vcodec h264 -acodec libfdk_aac "./converted/' . $video_mp4 . '" -y 1>convert.txt 2>&1', $output, $convert_status['mp4']);

    // Debug
    // echo '<pre>' . print_r($output, 1) . ' </pre>';

   

    // Debug
    // echo '<pre>' . print_r($output, 1) . ' </pre>';
  }
}
?>

我们要添加的标志在:https://propeview.com/wp-content/uploads/2021/08/logo-whiteb.png

例如您的 video.mp4 分辨率为 1280 x 720,
并在 x = 0 和 y = 0 的位置 video.mp4 上叠加 logo.png

对于许多场景和稳定,您应该首先了解ffprobe以分析输入

ffmpeg -i video.mp4 -i logo.png -filter_complex
   "[1:v]scale=w=1280:h=720,
    [0:v]overlay=x=0:y=0:format=yuv420[out]"
   -map 0:a -map [out] -y output.mp4

或无比例叠加

ffmpeg -i video.mp4 -i logo.png -filter_complex
   "[1:v][0:v]overlay=x=0:y=0:format=yuv420[out]"
   -map 0:a -map [out] -y output.mp4

文档:scale, overlay
注意 [1:v][0:v]:1 和 0 是输入的索引。 v为视频流,a为音频流