如何为 YouTube 直播添加字幕?
Posted
技术标签:
【中文标题】如何为 YouTube 直播添加字幕?【英文标题】:How to caption YouTube Livestreams? 【发布时间】:2020-07-27 08:59:45 【问题描述】:YouTube 提供了在直播中发送字幕的可能性,如 here 所述。但是,本指南引用了来自 Youtube Studio Classic 的链接,该链接已不存在。在新的直播控制室里,我只能找到一个字幕链接,看起来像
http://upload.youtube.com/closedcaption?cid=....
并且不包含ns
或sparams
等参数。
如何为直播控制室提供字幕?其他页面上也有一些误导性信息 - 我可以只使用简单的 HTTP POST 还是需要购买 supported softwares 之一?
如果无法使用 POST,我可以使用 Livestreaming API 吗?
【问题讨论】:
【参考方案1】:它适用于我使用下面的 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)
基本上不再需要其他人了。
【讨论】:
【参考方案2】:它也适用于 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 直播添加字幕?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Youtube API 为 Youtube 视频添加字幕?
如何为 youtube 添加 wmode="opaque" 或 wmode="transparent" 到这个 php 片段? [复制]