如何使用命令行在Windows上播放音频文件?

20

在Windows系统中,有没有一种简单的方式(即只需在单个命令行上输入)来播放几个.mp3文件,然后自动退出?

例如,使用wmplayer似乎无法在播放完毕后自动退出,这迫使用户不得不每次找到它并单击关闭。(wmplayer 11还会奇怪地重复播放某些文件,如果你传递给它一个列表的话。)(早期(1990年代)版本的'mplayer'曾支持“/close”命令行选项,但在wmplayer 11中似乎无效。)

我更喜欢使用每个人都会拥有的东西(比如wmplayer,quicktime…)


3
我认为你可以放心地假设在这些问题中使用XP及更高版本的操作系统。 - Joey
11个回答

33

旧问题,新答案 - 您可以使用 PowerShell:

powershell -c (New-Object Media.SoundPlayer 'c:\PathTo\YourSound.wav').PlaySync();

2
如果文件路径中有空格,双引号无法正常工作,必须使用单引号。 - Vedran
4
无法使用mp3格式文件:您的.mp3文件不是一个有效的wave文件。 - xpt
它可以工作。我播放了Windows Alarm.wav,但在播放后也出现了以下错误:“由于缺少参数,无法处理命令。必须跟随命令。” - CrackerKSR

12
我使用过 cmdmp3。它非常轻量,只有28Kb。

页面和下载开放给我。 - User
1
我刚刚检查了这个网站,一切都正常。zip文件的直接下载链接为cmdmp3.zip。将其解压并使用cmdmp3.exe或cmdmp3win.exe播放文件。它们之间的区别在于cmdmp3.exe使用自己的窗口来播放文件(关闭窗口停止),而cmdmp3win.exe则在没有窗口的情况下播放文件。使用cmdmp3或cmdmp3win,后跟“C:\yourfolder\yourmp3file.mp3”,即可播放您的文件。 - pathe3
1
如果将来需要参考此内容,源代码可以在 github 上找到。 - h2ooooooo
新页面链接。 新的下载链接。 这个工具非常好用,我正在Windows上使用它来解决JavaSound的疯狂问题。 - Stefan Reich

3
使用VBScript:
Set objArgs = Wscript.Arguments

if (objArgs.Count = 0) then
    Wscript.echo "I need a sound file as argument!"
    WScript.Quit 123
end if
Wscript.echo "Playing: " & objArgs(0) & "..."

Set objPlayer = createobject("Wmplayer.OCX.7")

With objPlayer  ' saves typing
    .settings.autoStart = True
    .settings.volume = 50  ' 0 - 100
    .settings.balance = 0  ' -100 to 100
    .settings.enableErrorDialogs = False
    .enableContextMenu = False
    .URL = objArgs(0)
    WScript.Sleep(10000)  ' time to load and start playing
    '.Controls.Pause()  ' stop
End With

MsgBox "if WMP is still playing, clicking OK will end it", _
    vbInformation, "WMP Demo finished"

如果VBScript进程结束,媒体播放器也会结束,您必须等待它(我不需要它,我的声音只有几秒钟长)。
我今天在我的特殊情况下使用了这个: https://groups.google.com/forum/#!topic/microsoft.public.scripting.vbscript/gfOOvnN8t-U

2
我建议在脚本末尾加上 WScript.Quit 0,这样它就可以用作构建步骤(我用它来宣布构建成功)。 - Tomáš Zato
这个很完美。对于计划任务来说,它太啰嗦了,所以我删除了 Wscript.echo 行和最后的 MsgBox。请注意,为 .MP3 文件指定一个完全合格的路径名总是一个非常好的主意。回答得很好。+1。类似于如何在VBS中每小时使PC宣布时间:https://superuser.com/questions/1268702/how-to-make-windows-speak-the-time-at-the-top-of-the-hour/1268703 - SDsolar

3
  • 有一些纯命令行播放器,这里列出了一些

  • 此外,WinAmp曾经有一个叫做CLAMP的命令行控制器。我不确定它是否还存在或可用,但可以在Google上搜索 - 它非常好用。

  • 此外,VLC具有一些命令行功能,尽管我从未使用过。


1
我使用了 VLC。vlc-1.1.9\vlc.exe --play-and-exit %WINDIR%\media\tada.wav - TJR
请注意,当前版本的VLC(1.1.9)在处理命令行参数方面存在问题。您无法设置音量,并且似乎许多其他命令行选项也无法正常工作。仅进行快速测试,我发现--start-time--width--greyscale也无法正常工作(出于显而易见的原因使用视频进行测试)。 --fullscreen可以正常工作,因此一般来说并不是命令行解析出了问题。 - MSalters
“some are listed here”链接已失效。 - whitebeard
因为回答链接到了资源页面,但是这些资源已经不存在了,所以回答变得无法使用,因此被投票否决。 - M. le Rutte
1
@M.leRutte - 已更新到可用的archive.org链接。 - DVK
@whitebeard - 已修复 - DVK

2
您可以使用 fmedia 在 Windows 终端播放音频文件:

您可以使用 fmedia 在 Windows 终端播放音频文件:

fmedia file1.mp3 file2.mp3

这个命令将会开始播放file.mp3,然后是file2.mp3,在文件播放完毕之后退出。

如果您希望在后台运行,可以在命令中添加--background选项:

fmedia file.ogg --background

该命令将在后台启动一个新进程,并立即脱离您的控制台。
fmedia是一款便携应用程序(无需安装),占用系统资源非常少。此外,它的启动时间是瞬间的。
P.S. 使用命令fmedia.exe --install将其添加到您的%PATH%环境变量中,否则您需要使用完整路径执行它,例如D:\ fmedia \ fmedia.exe

2
这是我所做的事情:

这是我所采取的步骤:

rem Replace the following path with your music file
start C:\Users\Username\Desktop\your-music.mp3
rem Replace 10 with how many seconds you want the player to run
ping localhost -n 10 >nul
taskkill /im wmplayer.exe

请注意,这需要将.mp3文件与wmplayer.exe(Windows Media Player)关联。

请注意,这需要将 .mp3 文件与 wmplayer.exe (Windows Media Player) 关联起来。啊,是的!难怪我只看到了一个新的 CMD 窗口弹出。 - xpt

1
我正在使用Mayra Delgado答案的改进版本:
Set objArgs = Wscript.Arguments

if (objArgs.Count = 0) then
    Wscript.echo "I need a sound file as argument!"
    WScript.Quit 123
end if
Wscript.echo "Playing: " & objArgs(0) & "..."

Set objPlayer = createobject("Wmplayer.OCX.7")

With objPlayer  ' saves typing
    .settings.autoStart = True
    .settings.volume = 50  ' 0 - 100
    .settings.balance = 0  ' -100 to 100
    .settings.enableErrorDialogs = False
    .enableContextMenu = False
    .URL = objArgs(0)
    ' Wait until play finish
    While .Playstate <> 1
        Wscript.Sleep 100
    Wend
End With

MsgBox "if WMP is still playing, clicking OK will end it", _
    vbInformation, "WMP Demo finished"

1

你可以编写一个小的VBScript,使用Windows Media Player ActiveX控件播放音频文件。一旦播放完成,你应该能够终止该进程。

我正在寻找一些解决方案,可能需要一些时间才能得出可行的结果。


1
这个答案几乎值得一个+1。如果有一个VBScript示例就更好了。 - mydoghasworms

0

我发现在Windows命令行中播放.mp3文件的最快方法是使用mpeg123

我知道它不是默认安装在人们的机器上的,但从我的角度来看,微软自己的播放器在不同版本上也不一致可用。

我正在一个执行时间至关重要的项目中使用它,而像只播放某些帧这样的功能非常有用。我发现这比本主题中提到的cmdmp3和vbscript示例(在我的配置中)更快。

我只播放.mp3文件的某些帧的语法: mpg123.exe -k 2 -n 3 -q -1 -4 beep.mp3


0

这里有几个脚本。

mediarunner.bat - 它使用Windows Media Player Active X对象,因此如果没有安装Windows Media Player,则无法使用(尽管它通常随Windows捆绑)。只接受一个参数-要播放的文件的路径。

spplayer.bat - 使用SP Voice对象,但只能播放.wav文件。同样,它只接受一个参数-要播放的文件的路径。

soundplayer.bat - 使用Internet Explorer对象和特定的bgsound标记,只能在Internet Explorer中使用。可以播放.mp3、.wav等文件。它可以接受两个参数。您要播放的文件和声音音量(介于-10000到0之间的数字):

 call soundplayer.bat "C:\Windows\Media\Windows Navigation Start.wav" 0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接