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

时间:2009-10-15 00:50:43

标签: windows command-line audio batch-file mp3

在Windows中,是否有一种简单的方法(即您可以在单个命令行上键入的内容)只播放几个.mp3文件然后自行退出?

例如,wmplayer似乎在完成时似乎没有退出,迫使用户将其追捕并每次点击它关闭。 (如果你把它传给一个列表,wmplayer 11似乎也会奇怪地重复一些文件。) (旧的(1990年代)版本的'mplayer'用于支持'/ close'命令行选项,但它似乎在wmplayer 11中不起作用。)

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

11 个答案:

答案 0 :(得分:22)

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

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

答案 1 :(得分:11)

我使用过cmdmp3。非常轻巧,28Kb。

答案 2 :(得分:3)

  • 有纯粹的命令行播放器。 Some are listed here

  • 此外,WinAmp曾经有一个名为CLAMP的命令行控制器。我不确定它是否仍然存在或可用,但谷歌为它 - 它非常好。

  • 此外,VLC有some command line capabilities,但我从来没有检查过它们。

答案 3 :(得分: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进程结束,Media Player也会结束,你必须等待它(我不需要它,我的声音只有几秒钟)。

今天我用这个特例来说: https://groups.google.com/forum/#!topic/microsoft.public.scripting.vbscript/gfOOvnN8t-U

答案 4 :(得分:1)

这就是我做的事情:

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)相关联。

答案 5 :(得分: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"

答案 6 :(得分:0)

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

我正在四处寻找,也许可以提出一个有效的解决方案。可能需要一段时间。

答案 7 :(得分:0)

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

我知道默认情况下人们的机器上没有它,但从我的观点来看,微软自己的播放器在不同的版本上也不是一直可用的。

我在一个执行时间必不可少的项目中使用它,并且只播放某些帧的功能非常有用。我发现这个(在我的配置中)比这个线程中提到的cmdmp3和vbscript示例更快。

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

答案 8 :(得分:0)

以下是几个脚本。

mediarunner.bat - 它使用Windows媒体播放器活动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

答案 9 :(得分:0)

您可以使用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

答案 10 :(得分:0)

如果您需要跨平台的内容,则mplayer在Linux和Windows上都可以很好地工作,并且与npm的play-sound兼容。