.NET Core使用Twilio WhatsApp API发送视频失败排查求助
错误码63021(Invalid content)排查与解决
Twilio错误码63021明确指向WhatsApp不接受你上传的视频媒体内容,结合你能正常发送图片/文字的情况,问题出在视频本身的属性不符合WhatsApp通过Twilio发送的规则,以下是具体排查点和解决方法:
核心限制排查
1. 视频文件大小超限
WhatsApp通过Twilio发送视频的最大限制是16MB,你使用的Pexels 4K视频(2560x1440)文件大小大概率远超这个阈值。可以直接下载视频查看体积,或用工具校验URL对应的文件大小。
2. 视频编码/格式不符合要求
WhatsApp仅支持H.264视频编码 + AAC音频编码的MP4文件,即使后缀是.mp4,若编码不符合也会被拒绝。可使用FFmpeg工具检查编码:
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 your-video.mp4 ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 your-video.mp4
两次输出需分别为h264和aac才符合要求。
3. 媒体URL的MIME类型响应头错误
Twilio要求媒体URL返回正确的Content-Type头,视频必须返回video/mp4。可通过curl命令验证:
curl -I "https://videos.pexels.com/video-files/4114797/4114797-uhd_2560_1440_25fps.mp4"
查看响应头中的Content-Type字段,若返回application/octet-stream等非video/mp4值,Twilio会判定内容无效。
解决步骤
- 压缩/转换视频:使用FFmpeg将视频压缩到16MB以内,并转成符合编码要求的MP4:
ffmpeg -i input.mp4 -vcodec libx264 -acodec aac -b:v 1M -b:a 128k output.mp4
调整-b:v(视频比特率)和-b:a(音频比特率)可灵活控制文件大小。
2. 替换测试视频:先使用一个已知符合要求的小体积MP4视频(比如几MB的H.264/AAC编码文件)测试,确认代码逻辑正常。
3. 代码优化(可选):添加异常捕获,直接获取Twilio的详细错误信息辅助调试:
try { var message = await MessageResource.CreateAsync( from: new Twilio.Types.PhoneNumber("your-twilio-whatsapp-number"), body: messageDto.SMSBody, mediaUrl: mediaUrls, to: new Twilio.Types.PhoneNumber("whatsapp:+" + messageDto.ToPhoneNumber), statusCallback: new Uri(baseUrl + "/Support/ReceiveWhatsAppStatus")); } catch (TwilioException ex) { Console.WriteLine(ex.Message); // 打印详细错误描述 }
内容的提问来源于stack exchange,提问作者DIBYA RANJAN ROUT
相关产品推荐
相关产品推荐

