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

whatsapp-web.js调用sendMessage无法发送视频问题求助

解决whatsapp-web.js无法发送视频的问题

问题背景

使用whatsapp-web.js的sendMessage方法发送媒体时,图片链接、GIF链接(以图片形式)均可正常发送,但传入视频链接或本地5MB视频时无任何反应。环境为2020款MacBook Pro M1,已尝试配置Puppeteer的executablePath,问题仍未解决。测试代码如下:

import pkg from 'whatsapp-web.js';
const { Client, LocalAuth, MessageMedia } = pkg;
import qrcode from 'qrcode-terminal';

const client = new Client({ 
    puppeteer: {
        executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
    },
    authStrategy: new LocalAuth({ dataPath: "sessions" }), 
    webVersionCache: { 
        type: 'remote', 
        remotePath: 'https://raw.githubusercontent.com/wppconnect-team/wa-version/main/html/2.2412.54.html', 
    }
});

client.on('qr', qr => {
    qrcode.generate(qr, {small: true});
});

client.on('ready', async () => {
    console.log('Pret'); 
    const media = await MessageMedia.fromUrl('https://runex-fitness.com/wp-content/uploads/2024/05/Elegant-Beige-Launching-Soon-Instagram-Reel-2-1.mp4');
    await client.sendMessage("120363276528243349@g.us", media);
});

client.on('message_ack', (message, ack) => {
    console.log(`Message ack received: ${ack}`);
});

client.initialize();

解决方案

1. 捕获错误信息定位问题

首先在代码中添加try-catch块,捕获MessageMedia.fromUrl和sendMessage过程中的具体错误,这是排查问题的核心步骤:

client.on('ready', async () => {
    console.log('Pret'); 
    try {
        const media = await MessageMedia.fromUrl('https://runex-fitness.com/wp-content/uploads/2024/05/Elegant-Beige-Launching-Soon-Instagram-Reel-2-1.mp4');
        console.log('媒体加载成功,MIME类型:', media.mimetype);
        const sendResult = await client.sendMessage("120363276528243349@g.us", media);
        console.log('消息发送结果:', sendResult);
    } catch (error) {
        console.error('视频发送错误:', error);
    }
});

通过错误信息可直接定位是视频格式不兼容、网络问题还是库的内部错误。

2. 确保视频符合WhatsApp格式要求

WhatsApp仅支持特定编码的MP4视频:

  • 视频编码:H.264
  • 音频编码:AAC
  • 分辨率:建议不超过1080p

使用ffmpeg命令检查视频编码:

ffmpeg -i 你的视频文件.mp4

若编码不符合,用ffmpeg转码:

ffmpeg -i 原视频.mp4 -c:v libx264 -c:a aac 转码后视频.mp4

3. 调整Puppeteer配置适配M1芯片

M1 Mac的Puppeteer可能需要额外的启动参数,修改客户端配置:

const client = new Client({ 
    puppeteer: {
        executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
        args: [
            '--no-sandbox',
            '--disable-setuid-sandbox',
            '--disable-dev-shm-usage',
            '--single-process', // 适配M1架构的关键参数
            '--disable-gpu'
        ]
    },
    // 其他配置...
});

4. 本地视频使用MessageMedia.fromFilePath方法

发送本地视频时,改用同步的fromFilePath方法(无需await),避免路径或异步加载问题:

client.on('ready', async () => {
    console.log('Pret'); 
    try {
        // 本地视频路径
        const media = MessageMedia.fromFilePath('/Users/你的用户名/Desktop/test.mp4');
        await client.sendMessage("120363276528243349@g.us", media);
    } catch (error) {
        console.error('本地视频发送错误:', error);
    }
});

5. 验证WhatsApp Web手动发送可行性

先在浏览器打开WhatsApp Web,手动尝试发送目标视频:

  • 若手动发送失败:说明视频本身不符合WhatsApp要求,转码或更换视频即可。
  • 若手动发送成功:则问题出在whatsapp-web.js的配置或版本,可尝试更换web版本缓存的链接,使用更稳定的WhatsApp Web版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:34:54