调用FFMpeg\Media\Video::addWatermark()方法报错,求助解决
问题原因
你直接使用了原生FFMpeg\Media\Video类实例,而addWatermark()是ProtoneMedia\LaravelFFMpeg封装的专属方法,原生PHP-FFMpeg的Video类并没有这个方法,所以报错。其他视频处理功能(如resize、frame)是原生PHP-FFMpeg自带的,因此注释水印代码后能正常运行。
修正方案
改用ProtoneMedia\LaravelFFMpeg提供的封装类来操作,而不是原生的FFMpeg\FFMpeg。修正后的代码如下:
use ProtoneMedia\LaravelFFMpeg\Support\FFMpeg; use ProtoneMedia\LaravelFFMpeg\Filters\WatermarkFactory; $video = FFMpeg::open('video-making-test/test1.mp4'); // 其他原生功能依然可以正常使用 // $video // ->filters() // ->resize(new \FFMpeg\Coordinate\Dimension(320, 240)) // ->synchronize(); // $video // ->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(10)) // ->save('video-making-test/results/frame.jpg'); $video->addWatermark(function(WatermarkFactory $watermark) { $watermark->fromDisk('public') ->open('video-making-test/logo.png') ->right(25) ->bottom(25); }); // 最后别忘了保存处理后的视频 $video->save('public/video-making-test/output.mp4');
补充说明
- 确保已正确配置Laravel FFMpeg的环境(比如
config/ffmpeg.php配置文件) - 视频处理完成后必须调用
save()方法生成最终文件
内容的提问来源于stack exchange,提问作者Amir Khan
相关产品推荐
相关产品推荐

