有没有办法在保留章节元数据的同时下载视频?

Moh*_*ini 2 python youtube bash command-line youtube-dl

我以前用过很多视频下载器:atube catcher、4k 下载器、jDownloader,目前使用的是 youtube-dl。我无法下载视频,这个例如,同时仍保持其网络章节完整,像第一部分是“介绍”持续从00:00至00:45等。到目前为止,我用 youtube-dl 尝试了这些参数

文件系统

--write-annotations --write-description --write-info-json

缩略图

--write-all-thumbnails

视频格式

-f 'bestvideo[height<=720]+bestaudio/best[height<=720]/worst' --merge-output-format mp4

后期处理

--add-metadata --embed-subs --embed-thumbnail


还尝试请求 mkv 视频格式(认为它可能内置于其中)并没有帮助。
我知道这些选项并没有真正说明部分,但我正在尝试获取尽可能多的元数据

Her*_*cón 5

您需要的信息在 youtube-dl 信息 JSON 中称为章节。

最近一个针对 youtube-dl 的公开拉取请求修复了此信息的问题。在当前版本的 youtube-dl 中,如果您使用---write-info-json--dump-json您将看到章节信息为空 ( "chapters": null)。您可以使用 fork 存储库中的代码来获取您想要的信息。

按着这些次序:

  1. 克隆这个存储库

    git clone https://github.com/gschizas/youtube-dl.git
    
    Run Code Online (Sandbox Code Playgroud)
  2. 切换到存储库目录:

    cd youtube-dl/
    
    Run Code Online (Sandbox Code Playgroud)
  3. 签出拉取请求分支:

    git checkout bugfix/youtube/chapters-fix-extractor
    
    Run Code Online (Sandbox Code Playgroud)
  4. 从当前位置运行 youtube-dl:

    python -m youtube_dl --write-info-json https://youtu.be/LnO42jxJaC4
    
    Run Code Online (Sandbox Code Playgroud)

您将在 info JSON 中看到这样的信息:

"chapters": [
    {
        "start_time": 0.0,
        "end_time": 46.0,
        "title": "Intro"
    },
    {
        "start_time": 46.0,
        "end_time": 72.0,
        "title": "QOTD"
    },
    ...
]
Run Code Online (Sandbox Code Playgroud)

希望修复程序将被 youtube-dl 存储库接受并包含在未来的版本中,因此无需克隆任何存储库。