如何安排完全来自 Linux 的 YouTube 直播?
How can I schedule a YouTube livestream entirely from Linux?
我在 Raspberry Pi(带有其原生相机)上进行了设置,它使用 cronjob 启动 ffmpeg session 并将其输出流式传输到 YouTube。我每次 re-use 相同的流密钥,它被写入我的 ffmpeg 脚本中。这一切每周都完美运行,在所需时间自动启动和停止。
但是,在直播之前的每个星期,我都必须“手动”进入 YouTube Studio 并“安排”新的未来活动。这很简单,因为它让我可以“重复使用”以前的设置——我只需更改标题、日期和时间。但我也很想找出一种方法来自动化这部分流程。我假设它涉及使用 YouTube 数据 API,但我不太精通 API、JSON 等。
(我确实有很强的 Linux 背景、bash 脚本编写技能和一般编程背景。)
我的最终解决方案只需要:
- 创建新的预定事件(可能在上线前 12 小时),包括标题、日期、时间、“未列出”状态、类别等等——我在 Studio 中手动进行的所有常规设置
- 为即将到来的流检索分配的URL(然后我的脚本会通过电子邮件将其发送给我)
所以,基本上,我是在寻求帮助开始使用 API,或者任何能够做到这一点的方法。我更愿意在执行 ffmpeg 编码的同一个 Pi 上对其进行编码(尽管在紧要关头,我可以从另一台计算机创建时间表,甚至 Windows)。任何例子都会很棒。
到目前为止,我所做的就是创建我的 Google 项目,在项目中启用 YouTube 数据 API,并创建我的 API 密钥。但我不确定从那里去哪里。
如果 Python 作为实现语言适合您,那么我建议使用 Google 的 APIs Client Library for Python。
基本上,这个库质量好而且(与其他客户端库相比)使用简单。例如,它将使您不必显式处理 REST API 调用、JSON 等。您的代码也适用于 GNU/Linux 和 Windows.
您可以通过阅读官方入门文档开始您的旅程:YouTube Live Streaming API Overview. Then I recommend absorbing these two important documents: Life of a Broadcast and Understanding Broadcasts and Streams。
然后去阅读、理解和运行 来自Google 的以下示例程序:create_broadcast.py
。当然,您必须根据您的用例调整该代码。
您必须保持耐心和毅力(因为您说您之前没有使用 YouTube 数据的经验 API)。这 API 很重要,但它会在您的(编程)旅程结束时为您带来回报(您提到精通编程)。
特别提醒:为了能够调用实时流媒体 API,您首先需要熟悉与所谓的 OAuth 2.0 授权和身份验证相关的内容:Implementing OAuth 2.0 Authentication. There's an official document that you need absorb: OAuth 2.0 for Mobile & Desktop Apps.
更多参考资料:直播 API 有一个 official documentation too. The main site documenting the client library is: Google API Client Library for Python Docs. Its source is public, to be found within the client library's public repo under the directory docs
。
我在 Raspberry Pi(带有其原生相机)上进行了设置,它使用 cronjob 启动 ffmpeg session 并将其输出流式传输到 YouTube。我每次 re-use 相同的流密钥,它被写入我的 ffmpeg 脚本中。这一切每周都完美运行,在所需时间自动启动和停止。 但是,在直播之前的每个星期,我都必须“手动”进入 YouTube Studio 并“安排”新的未来活动。这很简单,因为它让我可以“重复使用”以前的设置——我只需更改标题、日期和时间。但我也很想找出一种方法来自动化这部分流程。我假设它涉及使用 YouTube 数据 API,但我不太精通 API、JSON 等。 (我确实有很强的 Linux 背景、bash 脚本编写技能和一般编程背景。)
我的最终解决方案只需要:
- 创建新的预定事件(可能在上线前 12 小时),包括标题、日期、时间、“未列出”状态、类别等等——我在 Studio 中手动进行的所有常规设置
- 为即将到来的流检索分配的URL(然后我的脚本会通过电子邮件将其发送给我)
所以,基本上,我是在寻求帮助开始使用 API,或者任何能够做到这一点的方法。我更愿意在执行 ffmpeg 编码的同一个 Pi 上对其进行编码(尽管在紧要关头,我可以从另一台计算机创建时间表,甚至 Windows)。任何例子都会很棒。
到目前为止,我所做的就是创建我的 Google 项目,在项目中启用 YouTube 数据 API,并创建我的 API 密钥。但我不确定从那里去哪里。
如果 Python 作为实现语言适合您,那么我建议使用 Google 的 APIs Client Library for Python。
基本上,这个库质量好而且(与其他客户端库相比)使用简单。例如,它将使您不必显式处理 REST API 调用、JSON 等。您的代码也适用于 GNU/Linux 和 Windows.
您可以通过阅读官方入门文档开始您的旅程:YouTube Live Streaming API Overview. Then I recommend absorbing these two important documents: Life of a Broadcast and Understanding Broadcasts and Streams。
然后去阅读、理解和运行 来自Google 的以下示例程序:create_broadcast.py
。当然,您必须根据您的用例调整该代码。
您必须保持耐心和毅力(因为您说您之前没有使用 YouTube 数据的经验 API)。这 API 很重要,但它会在您的(编程)旅程结束时为您带来回报(您提到精通编程)。
特别提醒:为了能够调用实时流媒体 API,您首先需要熟悉与所谓的 OAuth 2.0 授权和身份验证相关的内容:Implementing OAuth 2.0 Authentication. There's an official document that you need absorb: OAuth 2.0 for Mobile & Desktop Apps.
更多参考资料:直播 API 有一个 official documentation too. The main site documenting the client library is: Google API Client Library for Python Docs. Its source is public, to be found within the client library's public repo under the directory docs
。