You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel视频水印叠加功能异常排查与修复方案咨询

解决Laravel-FFmpeg HLS导出时水印不显示的问题

1. 修正水印文件路径

你在指定磁盘fromDisk('videos-temp')后,open方法的参数应该是该磁盘下的相对路径,而非带磁盘前缀的路径。当前写法会尝试读取videos-temp/videos-temp/logo.png,大概率文件不存在,导致水印被FFmpeg静默跳过。

修改后的代码片段:

$watermark->fromDisk('videos-temp')
    ->open('logo.png')
    ->right(25)
    ->bottom(25)
    ->width(100)
    ->height(100);

2. 调整水印位置参数

right(-125)的负数取值会让水印直接超出视频右侧可视区域,自然无法看到。将负数改为正数,设置合理的偏移距离:

->right(25) // 距离视频右侧25像素
->bottom(25) // 距离视频底部25像素

如果需要适配不同分辨率的视频,也可以用FFmpeg内置变量动态计算位置:

->position('absolute', ['x' => 'main_w - 125', 'y' => 'main_h - 50'])

(main_w/main_h代表当前视频的宽/高,上述代码实现距离右侧125px、底部50px的固定位置)

3. 确保水印覆盖HLS多码率流

由于你导出的是HLS多码率流,全局addWatermark可能无法覆盖所有码率分支,建议将水印逻辑移到每个addFormat的过滤器回调中:

->addFormat($low, function ($filters) {
    $filters->resize(640, 480);
    // 给低码率流加水印
    $filters->watermark(function(WatermarkFactory $watermark) {
        $watermark->fromDisk('videos-temp')
            ->open('logo.png')
            ->right(25)
            ->bottom(25)
            ->width(100)
            ->height(100);
    });
})
->addFormat($high, function ($filters) {
    $filters->resize(1280, 720);
    // 给高码率流加水印
    $filters->watermark(function(WatermarkFactory $watermark) {
        $watermark->fromDisk('videos-temp')
            ->open('logo.png')
            ->right(25)
            ->bottom(25)
            ->width(200) // 可根据分辨率调整水印大小
            ->height(200);
    });
})

4. 排查FFmpeg实际执行命令

开启日志查看FFmpeg的真实执行命令,确认水印参数是否被正确添加:

  • 在.env中开启调试日志:
    FFMPEG_LOG_LEVEL=debug
    
  • 或者在代码中直接输出命令到日志:
    $export = FFMpeg::fromDisk('videos-temp')
        ->open($this->video->path)
        ->exportForHLS()
        // ... 你的其他配置
        ->addWatermark(function(WatermarkFactory $watermark) {
            // ... 水印配置
        });
    
    // 输出命令到Laravel日志
    \Log::debug('FFmpeg执行命令:', ['command' => $export->getCommand()]);
    
    $export->toDisk('videos')->save($destination);
    
    检查日志中是否包含overlay滤镜参数(FFmpeg加水印的核心标识),如果没有,说明水印配置未被正确解析。

内容的提问来源于stack exchange,提问作者Webdesignbr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 02:06:21