使用whatsapp-web.js发送FFmpeg拼接MP4为贴纸时FFmpeg报错求助
问题解决:WhatsApp-Web.js发送Concat生成的MP4贴纸报错
问题原因
你用FFmpeg concat生成的MP4文件虽然能正常播放,但文件结构或编码参数不符合WhatsApp贴纸转换时的FFmpeg处理要求——比如moov原子在文件末尾、流编码不统一,导致WhatsApp无法正确解析视频流。
解决方案
1. 重新封装MP4为标准格式
用FFmpeg重新处理你的concat生成文件,修复结构并确保编码兼容:
ffmpeg -i ./vid.mp4 -c:v libx264 -c:a aac -movflags +faststart ./fixed_vid.mp4
-movflags +faststart会把视频的索引信息(moov原子)移到文件开头,这是流媒体工具(包括WhatsApp贴纸转换)需要的格式。
2. 调整视频参数匹配WhatsApp贴纸要求
如果重新封装后还是报错,进一步调整参数符合贴纸规范:
- 分辨率:必须是正方形(推荐512x512)
- 时长:不超过15秒
- 编码:H.264视频 + AAC音频
执行以下命令:
ffmpeg -i ./vid.mp4 -c:v libx264 -c:a aac -vf "scale=512:512:force_original_aspect_ratio=decrease,pad=512:512:(ow-iw)/2:(oh-ih)/2" -movflags +faststart -t 15 ./sticker_ready.mp4
这个命令会把视频缩放到不超过512的尺寸,再补成正方形,同时限制时长在15秒内。
3. 修复代码语法错误
你原代码的client.on回调缺少闭合括号,修正后:
client.on("message", (message) => { const media = MessageMedia.fromFilePath("./sticker_ready.mp4"); client.sendMessage(message.from, media, { sendMediaAsSticker: true }); });
内容的提问来源于stack exchange,提问作者Shahar
相关产品推荐
相关产品推荐

