下载后立即播放 mp3 文件

下载后立即播放 mp3 文件

如何将这两个不同的命令组合到一个脚本中:

$ wget http://mymusic.store.com/musicfoo.mp3
#file gets saved as musicfoo.mp3
$ mplayer musicfoo.mp3

wget 尝试使用文件的默认名称/扩展名(如在互联网上)将文件保存到磁盘...在我的例子中是 mp3 文件...mplayer 使用此文件作为参数来播放它。

知道如何将其合并到一个脚本中吗?

答案1

直接播放文件

您甚至不必在播放这些文件之前下载它们mplayer。从mplayer手册页:

摘抄

  mplayer [options] [file|URL|playlist|-]

所以mplayer可以直接播放网址。

例子

$ mplayer http://mymusic.store.com/musicfoo.mp3

表现

您可能需要调整缓存值才能mplayer顺利播放内容。有一些开关mplayer可以实现这一点。

摘自 mplayer 手册页

-cache <kBytes>
    This option specifies how much memory (in kBytes) to use 
     when precaching a file or URL. Especially useful on slow media.

-cache-min <percentage>
   Playback  will  start when the cache has been filled up to 
   <percentage> of the total.

因此,也许像这样,您将使用这些值来根据您的情况获得流畅的播放。

$ mplayer -cache 8000 -cache-min 30 http://mymusic.store.com/musicfoo.mp3

下载并播放

其他一些答案中讨论的另一种方法是使用wget下载然后播放文件。这种方法的固有问题是在文件下载完成后获取要播放的文件名。

卷曲通过管道传输到 mplayer

这种方法实际上有两种技术。第一种是使用wgetcurl开始下载,然后将数据通过管道传输到mplayer.

例子

$ wget http://mymusic.store.com/musicfoo.mp3 -O - | mplayer -

您还可以像以前一样在这里缓存下载:

$ wget http://mymusic.store.com/musicfoo.mp3 -O - | mplayer -cache 8192 -

首先是curl,然后是mplayer

另一种方法是下载文件然后播放。您可以使用 Bash 函数来包装它,因为它现在变成了一个两步过程,首先完全下载文件,然后再播放。

例子

$ function smplayer() { wget $@ && mplayer $(basename $@); }

然后要进行下载和播放,您需要像这样运行该函数:

$ smplayer http://mymusic.store.com/musicfoo.mp3

答案2

尝试:

wget http://mymusic.store.com/musicfoo.mp3 && mplayer musicfoo.mp3

意思&&是“一旦左侧命令有成功地完成”。这假设左侧命令没有分叉或使用非标准退出状态价值观。我怀疑 wget 是否会执行后者,并且只要您不使用该-b开关,它也不应该执行前者。

答案3

尝试这个 :

mkdir /tmp/download_$$
cd /tmp/download_$$
wget http://mymusic.store.com/musicfoo.mp3
mplayer *

答案4

我有一个解决方案:

fpath=$(basename "$1")
wget $1
mplayer $fpath

上述问题是,.1如果文件名已经存在,wget 将为下载的文件分配一个文件名(在其末尾附加 a)。因此可以说 fpath 的值不是正确的文件。

相关内容