gpt4 book ai didi

youtube-api - 将字幕发送到 YouTube 直播

转载 作者:行者123 更新时间:2023-12-04 14:08:53 34 4
gpt4 key购买 nike

我正在尝试将字幕发送到 YouTube 直播流(实时)。我找到的所有文档似乎都不准确。

这个页面似乎最近:https://support.google.com/youtube/answer/6077032?&ref_topic=2853697

但还是错了。我将介绍我所做的一切。

  1. 转到 YouTube,然后点击右上角标有“创建”的灰色小相机。
  2. 这会弹出一个弹出窗口,然后我选择“开始直播”。
  3. 这会将我带到 studio.youtube.com。我单击左上角的“流”按钮。
  4. 输入基本数据。将流 URL 提供给 OBS。一切正常。
  5. 将字幕设置为将字幕发布到 URL 并复制/粘贴隐藏的 URL。
  6. 将所有内容都直播起来,然后导航到直播查看器并在大约 10 秒的延迟上观看我自己。
  7. 启动一个循环发送“This is a test”样式字幕的程序。

它们永远不会出现。

我的调试语句是这样的:

Sending to http://upload.youtube.com/closedcaption?cid=abcd-abcd-abcd-abcd-f77s&lang=en-US&seq=364. Body: -->2021-02-10T18:08:46.609Do not pass go.<--

也就是说,我正在对有问题的 URL 执行 POST,Content-Type 设置为 text/plain。正文是祖鲁语中的日期/时间、一个换行符、我的文本和一个换行符。

我正在记录这个输出:

2021/02/10 18:09:09,411 pid<1633> INFO:Post Caption status code: 200
2021/02/10 18:09:09,411 pid<1633> INFO:Post Caption Returned: "2021-02-10T18:09:09.392\n"

也就是说,YouTube 返回带有时间戳的 HTTP_OK (200),仅此而已。换句话说,它似乎在接受字幕。

我已确保在查看器窗口中打开了“显示字幕”。

字幕永远不会出现。

我只是添加了 lang 参数以防出现问题——这没有什么区别。我不知道我做错了什么。

而且我找不到任何准确的文档。我之前链接的页面是错误的。该网站在我设置时提供的 URL 与该页面上记录的内容完全不同。

您可能会认为,鉴于 YouTube 归 Google 所有,Google 搜索文档实际上会返回一些文档。我实际上在 StackOverflow 答案中找到了链接页面。

所以,问题...

有谁知道我可能做错了什么,或者有一些我可以尝试的提示?

有谁知道我可以在哪里找到最新的文档?

重申一下:

一个。直播(非上传视频)

B.字幕不会出现在 YouTube 播放器中

感谢帮助甚至提示。


这是我最新的调试。语言是C++。

发表标题:这发送至 http://upload.youtube.com/closedcaption?cid=5gb9-x5z8-szbb-ghrr-f77s&seq=50 .正文:-->2021-02-20T16:38:16.610这个<--发表说明:是发送至 http://upload.youtube.com/closedcaption?cid=5gb9-x5z8-szbb-ghrr-f77s&seq=51 .正文:-->2021-02-20T16:38:18.827是<--发送至 http://upload.youtube.com/closedcaption?cid=5gb9-x5z8-szbb-ghrr-f77s&seq=52 .正文:-->2021-02-20T16:38:20.800

<--发表一个标题:一个发送至 http://upload.youtube.com/closedcaption?cid=5gb9-x5z8-szbb-ghrr-f77s&seq=53 .正文:-->2021-02-20T16:38:21.047一种<--发表标题:测试。发送至 http://upload.youtube.com/closedcaption?cid=5gb9-x5z8-szbb-ghrr-f77s&seq=54 .正文:-->2021-02-20T16:38:23.264测试。<--

每条消息回复如下:

2021/02/20 16:37:50,555 pid<538> 信息:发布字幕状态代码:2002021/02/20 16:37:50,555 pid<538> 信息:返回的帖子说明:“2021-02-20T16:37:50.537\n”

我正在根据 YouTube 发回的日期/时间应用增量,我相当确定这部分有效。

我的结果:

- 字幕显示不一致。我发送时有 2 秒的延迟,我可能会或可能不会看到标题。

-当它们出现时,它们会在屏幕上停留很短的时间(大约 1/2 到 1 秒)。

-而且它们看起来是双重的:

This is
This is

我很惊讶。 YouTube 生成的是 http: 而不是 https:。切换我的 URL 会稍微改变行为,但影响不大。

最佳答案

Sending Captions to a YouTube Live Stream

是的,这完全有可能!让我详细说明。

要将隐藏式字幕发送到直播流,您需要使用 contentDetails.closedCaptionsType (contentDetails.enableClosedCaptions 已弃用!)属性。您希望通过 HTTP POST 将字幕发送到直播流的摄取 URL - 请参阅文档:

closedCaptionsHttpPost: You will send captions, via HTTP POST, to an ingestion URL associated with your live stream.

稍微偏离主题一点,您可以通过 contentDetails.closedCaptionsIngestionUrl 获取您的摄取 URL .它应该看起来像 http://upload.youtube.com/closedcaption?cid=xxx-xxx-xxx-xxx,而 xxx-xxx-xxx-xxx 会有所不同在你的终端。如需进一步阅读,请查看 documentation .


那么..您如何发送隐藏式字幕?首先,请记住有一些 limitations and requirements .其次,决定是否需要通过普通 HTTP POST 请求或嵌入式 - 参见 HLS ingestion documentation :

HLS ingestion supports two options for sending closed captions:

  1. Send closed captions via separate HTTP POST requests. This works forall HLS ingestions.
  2. Embedded 608/708 closed captions work with HLSingestions that use the H264 video codec but not with ingestions thatuse the HEVC video codec. See the Live Caption Requirements in theYouTube Help Center for more details.

以下是通过 Python 向 YouTube API 发出 HTTP POST 请求的示例(考虑 the data that needs to be parsed into,例如日期时间):

import requests
from datetime import datetime

cc = 'This is a test'
headers = {'content-type': 'text/plain'}
ingestion_url = 'http://upload.youtube.com/closedcaption?id=xxx-xxx-xxx-xxx=' + str(seq)

#Specify your details
server = ' region:reg1#cue1'

#Formatting the time properly
time = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3]

post = time + server + '\n' + cc + '\n'

requests.post(url=ingestion_url, data=post.encode('utf-8'), headers=headers)

请注意:

  1. 服务器详细信息是可选的!您不需要解析区域数据(请参阅 here )
  2. 您需要发送文本/纯文本请求,因此 {'content-type': 'text/plain'}.encode('utf-8')
  3. str(seq) 指的是计数字符串 - 它必须包含在每个 POST 请求中。检查here .
  4. 我上面的例子非常简单。为了进一步阅读,我强烈建议查看this detailed documentation有例子!这篇 YouTube 帮助文章总结了所有需要的信息(发布请求、预期返回(即 200 和日期时间)、参数等),并提供了很好的测试示例!

由于您没有指定编程语言,我继续选择了 Python。尽管您也可以通过普通的摄取 url 发送 POST 请求。正如之前多次提到的,"golden page for your project"展示了如何使用预先给定的摄取 url(YouTube 将提供给您)以及如何根据所述文档对其进行修改。

另请注意,我上面的解释是针对他们的暂存服务器(出于简单原因)。如果您想在野外对其进行测试,请不要忘记您需要包含 idnssparamas 等参数expire, signature, key and seq.

关于youtube-api - 将字幕发送到 YouTube 直播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66143575/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com