无需管道即可组合 youtube-dl 和 VLC

无需管道即可组合 youtube-dl 和 VLC

youtube-dl -o - <webpage> | vlc -在 VLC 中显示视频。不过,视频是管道式的(通过类似的东西fd://0),这抑制了向前/向后跳跃的可能性。

但是,youtube-dl -j <webpage>列出了包含多个“url”属性的 JSON 数据。如果您这样做vlc <url>,VLC 现在会显示视频长度,让我们跳跃等,就像我们正在播放本地视频一样。

问题:现在,完全可以编写一个小的 Python 脚本来提取 URL,但是有没有一种简单的方法可以仅使用简单的 Bash(最好是单行代码)来完成此操作?

注意:youtube-dl -j列出了一系列不同质量的视频流,最好选择质量最高的视频。

答案1

在 shell 中解析 JSON 通常不是一个好主意。你可以很容易地发现,在 U&L 上,几乎所有问题的答案都是“如何在 shell 中解析这个 JSON?”最终使用专门的工具(例如jq或者jshon)。

youtube-dl这就是为什么我建议在有多个视频版本可用时利用选择一个视频版本的功能,并在标准输出上打印其 URL 而不是下载它:

  • --format-f:让您...指定格式。要获得最高质量,只需指定best。实际上,在您的情况下,这可能不是必需的,因为(请参阅手册页youtube-dl(1)):

    默认情况下,youtube-dl 尝试下载最佳可用质量

  • --get-url、 或-g、 避免下载任何视频并仅将所选视频的 URL 打印到标准输出。

然后,利用 的功能vlc从 URL 播放(和搜索)视频。您可以将 URL 传输到vlc

youtube-dl --get-url --format best 'https://www.youtube.com/watch?v=video_id' | vlc -

或使用命令替换vlc以 URL 作为参数进行调用:

vlc "$(youtube-dl --get-url --format best 'https://www.youtube.com/watch?v=video_id')"

相关内容