YouTube 支持一些二进制字幕文件格式,例如 ebu-stl。
我有一个 *.stl 文件,当我通过 Web 界面上传它时,它可以正常上传和处理。但是,当我尝试使用 POST 请求通过 API v2 上传它时,它似乎无法正确识别文件格式。POST 请求看起来像这样:
POST /feeds/api/videos/VIDEO_ID/captions HTTP/1.1
Host: gdata.youtube.com
Content-Type: application/vnd.youtube.timedtext; charset=UTF-8
Content-Language: en
Slug: Title of caption track
Authorization: Bearer ACCESS_TOKEN
GData-Version: 2
X-GData-Key: key=DEVELOPER_KEY
<Caption File Data>
This is how the *.stl file uploaded via the API looks on the website. There should be several lines with readable text.
![Ebu-Stl uploaded via Api](https://i.stack.imgur.com/td70S.jpg)
当我使用相同的代码上传 utf8 纯文本字幕文件(例如 *.vtt)时,一切正常。此外,如果我通过 Web 界面上传一次 stl 文件,并通过 API 上传一次,然后通过 API 检索这两个文件,它们是字节相同的。
对我来说,这看起来像是一个编码问题 - youtube 正确接收文件,但可能将整个二进制文件解析为 UTF-8。但是,当我省略其中之一时,youtube 会响应 4xx 错误charset= or 内容语言.
是否可以上传二进制字幕文件?如果不可能的话,我也希望得到确认。
如果您想自己尝试的话,请使用简约的 stl 文件(十六进制转储)。读作(红宝石):
stl = hex.chars.each_slice(2).map{|x|x.join.to_i(16)}.pack('C*')
API v2 现已正式弃用。自 4 月 2 日起,API v3 现已推出官方支持字幕。也支持二进制字幕文件。
该文档缺少有关原始 HTTP 请求的一些详细信息。你可以尝试使用他们的图书馆之一.
我使用了他们的 python 脚本并查看了它提出的请求。作为参考,这里有一个用于上传二进制字幕/字幕文件的最小工作 HTTP 请求。
The 文档没有提到这个参数,但是设置uploadType=multipart
很重要,否则 API 将返回错误。
POST /upload/youtube/v3/captions?uploadType=multipart&part=id,snippet&sync=false HTTP/1.1
Host: www.googleapis.com
Accept: */*
Authorization: Bearer {AUTH_TOKEN}
X-GData-Key: key={YOUR_KEY}
Content-Type: multipart/related; boundary================83250640405719953005==
Content-Length: 7147
Expect: 100-continue
--===============83250640405719953005==
Content-Type: application/json
MIME-Version: 1.0
{"snippet":{"videoId":"Agn_uesF248","language":"en","name":"Subtitle Test 2","isDraft":false}}
--===============83250640405719953005==
MIME-Version: 1.0
Content-Type: application/sla
Content-Transfer-Encoding: binary
{BINARY_CAPTION_FILE_DATA}
--===============83250640405719953005==--
application/sla
是 ebu-stl 字幕文件。使用text/plain
对于纯文本字幕(.srt、.vtt、.ass 等)。
Replace {AUTH_TOKEN}
and {YOUR_KEY}
with 正确的授权凭证对于范围https://www.googleapis.com/auth/youtube.force-ssl
; and {BINARY_CAPTION_FILE_DATA}
与您要上传的文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)