如何为 YouTube 直播添加字幕?

How to caption YouTube Livestreams?

YouTube 提供了在直播中发送字幕的可能性,如 here 所述。但是,本指南引用了 Youtube Studio Classic 中的 link,它已不存在。在新的直播控制室里,我只能找到一个link的字幕,看起来像

http://upload.youtube.com/closedcaption?cid=....

并且不包含 nssparams.

等参数

如何为直播控制室提供字幕?其他页面上也有一些误导性信息 - 我可以只使用简单的 HTTP POST 还是我需要购买其中一个 supported softwares?

如果无法使用 POST,我可以使用直播 API 吗?

使用下面的 python 代码对我有用。

import time
import requests
from datetime  import datetime

word = "this is caption " + str(seq)

ytlink = "http://upload.youtube.com/closedcaption?cid=xxx-xxx-xxx-xxx="+str(seq)

post_fields = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + ' \n' + word + '\n' 

headers = {'content-type': 'text/plain'}
r = requests.post(url=ytlink, data=post_fields.encode('utf-8'), headers=headers)
 
print(ytlink)
print(r.text)

其他的基本不用了

它也适用于 c#。 (抱歉,我认为这不是正确的代码示例,我第一次尝试回答任何问题...)

string CAPTION_TEXT = "This text is displayed as caption.<br>"; // note, br used for linebreak in caption
string STREAM_ID = "aaaa-bbbb-cccc-dddd-eeee";
int sequence = 1;
string url = "http://upload.youtube.com/closedcaption?cid="+STREAM_ID+"&seq="+sequence; // increment sequence every time you send
string message = dateTime.ToString("yyyy-MM-dd") + "T" +
            dateTime.ToString("HH") + ":" +
            dateTime.ToString("mm") + ":" +
            dateTime.ToString("ss.fff")+
            " region:reg1#cue1\n"+
            CAPTION_TEXT+"\n"
var content = new StringContent(message);
var client = new HttpClient();
var response = await client.PostAsync(url, content);
int statusCode = (int)response.StatusCode;
if(statusCode == "200") SUCCESS();