youtube-dl

youtube-dl

我只想流式传输(不下载)YouTube 视频。有没有简单的方法可以用 Python 实现这个功能,或者有脚本可以实现这个功能?或者我必须将视频下载到临时文件中,然后转换后再播放?

答案1

pafy是一个 Python 库,可用于检索 URL 以传递给 VLC 或 mplayer 等。您可以仅指定音频。它有很好的文档记录这里并且可以安装sudo apt-get install python-pafy

请注意,它附带了一个名为的命令行工具ytdl,它看起来与 类似youtube-dl,因此,它实际上无法满足您的要求。您必须编写一些 Python。根据您问题的性质,我认为这没有问题,但如果您需要进一步的帮助,请告诉我。

答案2

如果您有 vlc 和基于文本的浏览器 lynx(均可从 Ubuntu 的存储库获得),则可以使用一个巧妙的技巧从命令行流式传输视频。我使用的命令将进行搜索并创建第一页结果的播放列表,该播放列表将在 vlc 中播放。

我创建了一个简单的脚本来处理棘手的语法。该脚本是:

#!/bin/bash
lynx -dump "https://www.youtube.com/results?search_query=\"$1\"" | egrep -o "http.*watch.*" | vlc -

因此,如果您命名脚本,例如stream_youtube,您只需输入“stream_youtube "search term"

我刚刚试用了一下,之前有段时间没用过,发现一个窗口弹出几个我以前从未见过的错误,但尽管很烦人,它还是能用。有人可能会觉得它很有用,或者至少很有趣。:-)

答案3

这不是解决您问题的完美方法,但也许会对您有所帮助。

youtube-dl

有一个名为的命令行工具youtube-dl,它提供了很多选项。我认为它会先下载完整的视频,然后转换为音频。我不确定是否有可能只下载音频流,但我猜不是。此外,它youtube-dl是用python编写的,但它不仅仅是一个简单的脚本。

如果您查看手册页,请查找后处理选项。--extract-audio例如,将视频文件转换为音频文件。您还可以设置--audio-format--audio-quality。您还可以在下载后使用运行任何自定义命令--exec CMD

VLC 流媒体

或者,您可以使用 VLC 来流式传输视频,然后忽略或关闭视频功能。

复制网址,打开 vlc 并按 CTRL+V 或打开网络流 (CTRL+N) 并粘贴网址即可。然后单击视频->视频轨道->停用。

请注意,这仍将播放整个视频,但不会显示它。

答案4

您可以将 youtube-dl 的输出以您喜欢的格式传输到 ffplay 中,而无需显示任何窗口。

例子:

youtube-dl -f 251 https://www.youtube.com/watch?v=vdRJMuOFO88 -o - | ffplay -nodisp -autoexit -i -

这是通过 shell 完成的,但如果需要,您也可以通过编程来完成,因为两个应用程序都有 python 绑定。

相关内容