如何为 YouTube 直播添加字幕?
How to caption YouTube Livestreams?
YouTube 提供了在直播中发送字幕的可能性,如 here 所述。但是,本指南引用了 Youtube Studio Classic 中的 link,它已不存在。在新的直播控制室里,我只能找到一个link的字幕,看起来像
http://upload.youtube.com/closedcaption?cid=....
并且不包含 ns
或 sparams
.
等参数
如何为直播控制室提供字幕?其他页面上也有一些误导性信息 - 我可以只使用简单的 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();
YouTube 提供了在直播中发送字幕的可能性,如 here 所述。但是,本指南引用了 Youtube Studio Classic 中的 link,它已不存在。在新的直播控制室里,我只能找到一个link的字幕,看起来像
http://upload.youtube.com/closedcaption?cid=....
并且不包含 ns
或 sparams
.
如何为直播控制室提供字幕?其他页面上也有一些误导性信息 - 我可以只使用简单的 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();