如何为 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=....

并且不包含nssparams等参数。

如何为直播控制室提供字幕?其他页面上也有一些误导性信息 - 我可以只使用简单的 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 片段? [复制]

嵌入不带视频 ID 的 YouTube 频道的当前直播

PHP:使用同步标志上传 YouTube v3 API 字幕

怎样快速下载YouTube视频字幕

如何为 iPad 创建一个 YouTube 或 eBay 风格的界面?