使用Graph API给Facebook视频传字幕:NodeJS调用成功但字幕不显示求助
Facebook视频字幕上传的NodeJS实现(Axios/Request)
一、Axios 实现方案
需要借助 form-data 模块构建 multipart/form-data 请求,和你使用curl的逻辑完全对齐:
const axios = require('axios'); const FormData = require('form-data'); const fs = require('fs'); async function uploadCaption(videoId, accessToken, subtitlePath) { const form = new FormData(); // 追加字幕文件,注意文件名必须符合 [name].[locale].srt 格式(如 video.en.srt) form.append('captions_file', fs.createReadStream(subtitlePath)); form.append('method', 'POST'); const apiUrl = `https://graph-video.facebook.com/v19.0/${videoId}/captions`; const requestParams = { access_token: accessToken, default_locale: 'none', locales_to_delete: '[]' }; try { const res = await axios.post(apiUrl, form, { params: requestParams, headers: { ...form.getHeaders() } // 必须携带 FormData 自动生成的请求头 }); console.log('字幕上传成功:', res.data); } catch (err) { console.error('上传失败:', err.response?.data || err.message); } } // 调用示例 // uploadCaption('1109093056874668', '你的AccessToken', './subtitle.en.srt');
二、Node-Request 实现方案
注意:request 模块已被官方标记为废弃,仅作兼容场景参考:
const request = require('request'); const fs = require('fs'); function uploadCaption(videoId, accessToken, subtitlePath) { const apiUrl = `https://graph-video.facebook.com/v19.0/${videoId}/captions`; const formData = { captions_file: fs.createReadStream(subtitlePath), method: 'POST', access_token: accessToken, default_locale: 'none', locales_to_delete: '[]' }; request.post({ url: apiUrl, formData }, (err, res, body) => { if (err) return console.error('上传失败:', err); console.log('字幕上传成功:', JSON.parse(body)); }); } // 调用示例 // uploadCaption('1109093056874668', '你的AccessToken', './subtitle.en.srt');
三、API返回成功但字幕不显示的排查点
- 文件名格式:必须严格遵循
文件名.语言代码.srt(如video.zh_CN.srt对应简体中文),Facebook 依赖文件名识别字幕语言 - 视频后台设置:进入Facebook视频管理页面,确认字幕已被启用,部分场景下默认不会自动显示,需手动开启「自动显示字幕」或选择对应语言
- 参数配置:
default_locale=none表示无默认字幕,用户需手动切换语言;若要默认显示,可改为对应语言代码(如en) - 处理延迟:Facebook 处理字幕需要时间,上传成功后等待3-5分钟再刷新查看
- 权限验证:确保 Access Token 拥有
pages_manage_posts和pages_read_engagement权限,且属于视频所属的页面
内容的提问来源于stack exchange,提问作者Gaurav Shah
相关产品推荐
相关产品推荐

