【发布时间】:2017-11-11 21:41:19
【问题描述】:
我正在尝试使用 Ruby 和 TK 构建一个音乐播放器/播放列表制作器。我还没有想出一种方法来流式传输 youtube 视频(实际上只有声音)我不想下载然后播放这首歌,因为那会花费太长时间。如果没有某种嵌入式播放器,我找不到任何关于直接流式传输的信息。
有谁知道我怎样才能最好地解决这个问题?
【问题讨论】:
我正在尝试使用 Ruby 和 TK 构建一个音乐播放器/播放列表制作器。我还没有想出一种方法来流式传输 youtube 视频(实际上只有声音)我不想下载然后播放这首歌,因为那会花费太长时间。如果没有某种嵌入式播放器,我找不到任何关于直接流式传输的信息。
有谁知道我怎样才能最好地解决这个问题?
【问题讨论】:
似乎是一个有趣的项目,所以我搜索了一下。来自这个 reddit 帖子:Tip: Use mpv + youtube-dl as streaming audio player 有这段代码使用mpv 程序来流式传输音频:
mpv "https://www.youtube.com/watch?v=sVK5Z6wnMxg" --no-video
该 URL 是当前正在进行的 Bonaroo 音乐节的直播。我试过了,它确实启动了音频。在幕后,这是使用youtube-dl,在手册页中有此注释:
如何直接流式传输到媒体播放器?
您首先需要告诉 youtube-dl 进行流式传输 使用 -o - 将媒体输出到标准输出,并告诉你- 从标准输入读取的 dia 播放器(它必须能够 用于流式传输),然后通过管道连接到 后者。例如,流式传输到 vlc (http://www.videolan.org/) 可以通过以下方式实现:
youtube-dl -o - "http://www.youtube.com/watch?v=BaW_jenozKcj" | vlc -
因此,如果您想将流传递到不同的媒体播放器,那将是一个不错的起点。
就 Ruby 而言;好吧,这本身并不是真正的 Ruby 解决方案,您只需使用反引号、system、Process.spawn、fork 等从 Ruby 调用 shell 程序。