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

如何从命令行在windows上播放音频文件?,windows,command-line,audio,batch-file,mp3,Windows,Command Line,Audio,Batch File,Mp3,在Windows中,是否有一种简单的方法(即,您可以在单个命令行中键入的内容)只播放两个.mp3文件,然后自行退出 例如,wmplayer在完成后似乎不会退出,这迫使烦躁的用户查找它并每次单击关闭它。(如果您向wmplayer 11传递列表,它似乎会奇怪地重复一些文件。) (早期(1990年代)版本的“mplayer”用于支持“/close”命令行选项,但在wmplayer 11中似乎不起作用。) 我更喜欢使用每个人都会在机器上使用的东西(如wmplayer、quicktime…) 有纯粹的命令

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

例如,wmplayer在完成后似乎不会退出,这迫使烦躁的用户查找它并每次单击关闭它。(如果您向wmplayer 11传递列表,它似乎会奇怪地重复一些文件。) (早期(1990年代)版本的“mplayer”用于支持“/close”命令行选项,但在wmplayer 11中似乎不起作用。)

我更喜欢使用每个人都会在机器上使用的东西(如wmplayer、quicktime…)

  • 有纯粹的命令行玩家

  • 此外,WinAmp过去有一个名为CLAMP的命令行控制器。我不确定它是否还活着或可用,但谷歌为它-这是相当好的

  • 而且,VLC虽然我从未检查过它们


您可能可以编写一个小的VBScript,它将使用Windows Media Player ActiveX控件来播放音频文件。一旦游戏结束,您也应该能够从此结束进程


我四处看看,也许能想出一个有效的解决办法。不过可能需要一段时间。

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

powershell -c (New-Object Media.SoundPlayer 'c:\PathTo\YourSound.wav').PlaySync();
我用过。28Kb非常轻。

使用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进程结束,媒体播放器也会结束,您必须等待它(我不需要它,我的声音只有几秒钟长)

我今天在我的特例中使用了这个:
我就是这么做的:

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

我使用的是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"
Set objArgs=Wscript.Arguments
如果(objArgs.Count=0),则
Wscript.echo“我需要一个声音文件作为参数!”
WScript.Quit 123
如果结束
Wscript.echo“播放:&&objArgs(0)&“…”
设置objPlayer=createobject(“Wmplayer.OCX.7”)
使用“objPlayer”保存键入
.settings.autoStart=True
.settings.volume=50'0-100
.settings.balance=0'-100到100
.settings.enableErrorDialogs=False
.enableContextMenu=False
.URL=objArgs(0)
“等到比赛结束
而游戏状态1
Wscript.Sleep 100
温德
以
MsgBox“如果WMP仍在播放,单击“确定”将结束播放”_
vbInformation,“WMP演示已完成”

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

我知道默认情况下,人们的机器上无法使用它,但在我看来,微软自己的播放器在不同的版本上也不一致

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

仅播放.mp3文件的某些帧的语法: mpg123.exe-k2-n3-q-1-4beep.mp3

这里有一些脚本

-它使用windows media player active x对象,因此如果没有安装windows media player,则无法使用它(尽管它通常随windows附带)。只接受一个参数-要播放的文件的路径

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

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

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

fmedia file1.mp3 file2.mp3
此命令将开始播放
file.mp3
,然后播放
file2.mp3
,然后在播放完文件后退出

如果您希望在后台执行此操作,请将
--background
开关添加到您的命令:

fmedia file.ogg --background
此命令将在后台启动一个新进程,并立即从控制台分离

fmedia是一个可移植的应用程序(无需安装即可工作),只需消耗很少的系统资源。而且,它的启动时间是瞬时的


另外,请使用命令
fmedia.exe--install
将其添加到您的
%PATH%
环境变量中,否则您需要使用完整路径执行它,例如
D:\fmedia\fmedia.exe

如果您需要跨平台的内容,在linux和windows上运行良好,并且与npm兼容。

Jacob:我想你可以放心地假设XP和更新版本有这样的问题。我使用了vlc。vlc-1.1.9\vlc.exe--播放并退出%WINDIR%\media\tada.wav请注意,当前版本(1.1.9)中的vlc已被wrt命令行参数破坏。您无法设置音量,而且似乎还有更多的命令行选项被破坏。只是快速测试,我发现
--开始时间
--宽度
--灰度
也被破坏(用视频测试的原因很明显)<代码>--全屏工作正常,因此一般来说,命令行解析并不是中断的。“此处列出了一些”链接不再有效。投票被否决,因为应答链接到包含资源的页面,但资源已消失,这使得答案不再可用。@M.leRutte-更新了到archive.org的链接,该链接有效。这个答案几乎应该得到+1。什么会使它是一个VBScript示例。页面和下载打开或我。我只是检查了网站,它是确定的。zip文件的直接下载是。解压缩该文件并使用cmdmp3.exe或cmdmp3win.exe播放该文件。它们之间的区别在于,cmdmp3.exe使用自己的窗口来播放文件(关闭窗口以停止),而cmdmp3win.exe仅在没有窗口的情况下播放文件。使用cmdmp3或cmdmp3win,后跟“C:\yourfolder\yourmp3file.mp3”播放您的文件。如果以后再次出现此问题,请参阅
fmedia file.ogg --background