上载时ffmpeg水印视频

时间:2019-12-28 18:04:11

标签: php ffmpeg

我有一个CMS系统,可以使用ffmpeg上传视频,每次出现错误(视频无法播放)或错误编码等问题时,我都无法找到一种对视频加水印的方法。 处理视频的命令是:

<link href="/your-path-to-fontawesome/css/fontawesome.css" 
rel="stylesheet">
<link href="/your-path-to-fontawesome/css/brands.css" rel="stylesheet"> 
<link href="/your-path-to-fontawesome/css/solid.css" rel="stylesheet">
<i class="fas fa-fish"></i>

我也尝试过此命令:

$shell     = shell_exec("$ffmpeg_b -y -i $video_file_full_path -vcodec libx264 -preset {$pt->config->convert_speed} -filter:v scale=426:-2 -crf 26 $video_output_full_path_240 2>&1");

这似乎不起作用..有什么办法可以解决此问题吗?

1 个答案:

答案 0 :(得分:0)

问题

如果要引用ffmpeg的输出,则会遇到两个错误:

  • 选项filter:v(设置流过滤图)不能应用于输入URL watermark.png -您正在尝试将输入选项应用于输出文件,反之亦然。将此选项移到它所属的文件之前。 输入文件watermark.png的错误解析选项。

  • 已通过'scale=426:-2' / -vf / -af选项为输出流0:0指定了
  • Filtergraph -filter,该输出流0:0是从复杂的filtergraph馈送的。 -vf / -af / -filter-filter_complex不能一起用于同一流。

解决方案

  • 选项放置很重要。您正在混合输入和输出选项的放置。位置必须如下:
    ffmpeg [global options] [input0 options] -i input0 [input1 options] -i input1 [output options] output
  • 请勿混用-vf-filter_complex。在一个-filter_complex实例中进行所有过滤。

示例

ffmpeg -i video.mp4 -i watermark.png -filter_complex "[0]scale=426:-2[bg];[bg][1]overlay=10:10" -c:v libx264 -preset fast -crf 26 output.mp4