使用FFmpeg生成Webp缩略图报错:需手动选择编码器
解决FFmpeg导出WebP缩略图时的编码器选择错误
当尝试从视频导出WebP格式缩略图时,出现以下错误:
Default encoder for format webp (codec webp) is probably disabled. Please choose an encoder manually.
使用的代码(基于fluent-ffmpeg)
ffmpeg() .input(videoInput) .screenshot({ count: 5, folder: outDir, filename: "thumbnail-%i.webp" }) .on('end', () => { console.log('Thumbnail exporting finished!'); return res() }) .on('start', (stdout) => { console.log(stdout); }) .on('error', (err) => { console.log('Error in generating thumbnails:', err.message); return rej(err) })
执行的FFmpeg命令及报错信息
ffmpeg -ss 0.8722221666666666 -i /var/folders/tk/4cc2j1r97tn36yc4zytl6xdr0000gn/T/temp-dir-55738-M4xzH9y06CGs/3dbedb5a-8a70-4199-a225-e0c973bd7f56/3dbedb5a-8a70-4199-a225-e0c973bd7f56-baity-intro.mp4 -y -filter_complex split=5[screen0][screen1][screen2][screen3][screen4] -vframes 1 -map [screen0] /var/folders/tk/4cc2j1r97tn36yc4zytl6xdr0000gn/T/temp-dir-55738-M4xzH9y06CGs/3dbedb5a-8a70-4199-a225-e0c973bd7f56/thumbnail-1.webp -vframes 1 -map [screen1] -ss 0.8722221666666666 /var/folders/tk/4cc2j1r97tn36yc4zytl6xdr0000gn/T/temp-dir-55738-M4xzH9y06CGs/3dbedb5a-8a70-4199-a225-e0c973bd7f56/thumbnail-2.webp -vframes 1 -map [screen2] -ss 1.7444443333333335 /var/folders/tk/4cc2j1r97tn36yc4zytl6xdr0000gn/T/temp-dir-55738-M4xzH9y06CGs/3dbedb5a-8a70-4199-a225-e0c973bd7f56/thumbnail-3.webp -vframes 1 -map [screen3] -ss 2.6166665 /var/folders/tk/4cc2j1r97tn36yc4zytl6xdr0000gn/T/temp-dir-55738-M4xzH9y06CGs/3dbedb5a-8a70-4199-a225-e0c973bd7f56/thumbnail-4.webp -vframes 1 -map [screen4] -ss 3.4888886666666674 /var/folders/tk/4cc2j1r97tn36yc4zytl6xdr0000gn/T/temp-dir-55738-M4xzH9y06CGs/3dbedb5a-8a70-4199-a225-e0c973bd7f56/thumbnail-5.webp Error in generating thumbnails: ffmpeg exited with code 1: Automatic encoder selection failed for output stream #0:0. Default encoder for format webp (codec webp) is probably disabled. Please choose an encoder manually. Error selecting an encoder for stream 0:0 Error: ffmpeg exited with code 1: Automatic encoder selection failed for output stream #0:0. Default encoder for format webp (codec webp) is probably disabled. Please choose an encoder manually. Error selecting an encoder for stream 0:0
解决方案
1. 手动指定WebP编码器
修改代码,在screenshot配置中添加codec: 'libwebp',强制FFmpeg使用WebP编码器:
ffmpeg() .input(videoInput) .screenshot({ count: 5, folder: outDir, filename: "thumbnail-%i.webp", codec: 'libwebp' // 新增指定编码器 }) .on('end', () => { console.log('Thumbnail exporting finished!'); return res() }) .on('start', (stdout) => { console.log(stdout); }) .on('error', (err) => { console.log('Error in generating thumbnails:', err.message); return rej(err) })
2. 验证FFmpeg是否支持libwebp
如果修改后仍报错,先检查FFmpeg是否编译了WebP支持:
执行以下命令:
ffmpeg -encoders | grep webp
若输出包含libwebp,说明支持;若无输出,需重新编译FFmpeg并添加--enable-libwebp参数,或通过包管理器安装带WebP支持的预编译版本。
内容的提问来源于stack exchange,提问作者Mohammed Baqer
相关产品推荐
相关产品推荐

