我只想流式传输(不下载)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
。
- 从 Ubuntu 软件中心获取:
sudo apt install youtube-dl
- 从 Github 获取:然后使用以下方法更新
sudo youtube-dl -U
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 绑定。