【问题标题】:How to play audio file on windows from command line?如何从命令行在 Windows 上播放音频文件?
【发布时间】:2010-12-06 21:16:49
【问题描述】:

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

例如,wmplayer 完成后似乎并没有退出,迫使忙碌的用户每次都去寻找它并单击它关闭它。 (如果你传递一个列表,wmplayer 11 似乎也会奇怪地重复一些文件。) (旧的(1990 年代)版本的 'mplayer' 曾经支持 '/close' 命令行选项,但它似乎在 wmplayer 11 中不起作用。)

我更喜欢使用每个人都会在他们的机器上拥有的东西(比如 wmplayer、quicktime...)

【问题讨论】:

  • Jacob:我认为你可以放心地假设 XP 和更新的这些问题。

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


【解决方案1】:

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

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

【讨论】:

  • 如果文件路径中有空格,则不能使用双引号,必须使用单引号。
  • 不适用于 mp3:“your.mp3 不是有效的波形文件。”
【解决方案2】:

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

【讨论】:

  • 页面和下载打开或我。
  • 我刚刚检查了网站,一切正常。压缩文件的直接下载地址是cmdmp3.zip。解压缩并使用 cmdmp3.exe 或 cmdmp3win.exe 播放文件。它们的区别在于cmdmp3.exe使用自己的窗口播放文件(关闭窗口停止),而cmdmp3win.exe只是播放文件没有窗口。使用 cmdmp3 或 cmdmp3win 后跟“C:\yourfolder\yourmp3file.mp3”来播放您的文件。
  • 以后如果再次宕机可以参考,源代码在github
  • New page link. New download link. 工具效果很好,我在 Windows 上使用它来解决 JavaSound 的疯狂问题。
【解决方案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

【讨论】:

  • 我建议以WScript.Quit 0 结束脚本,以便它可以用作构建步骤(我用它来宣布构建成功)。
  • 这非常有效。它对于计划任务来说太啰嗦了,所以我删除了 Wscript.echo 行和最后的 MsgBox 并注意,给命令行一个完全限定的 .MP3 文件路径名总是一个好主意。优秀的答案。 +1 类似于如何让 PC 在 VBS 中宣布整点时间:superuser.com/questions/1268702/…
【解决方案4】:
  • 有纯命令行播放器。 Some are listed here.

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

  • 另外,VLC 有 some command line capabilities 虽然我从未检查过它们。

【讨论】:

  • 我用过vlc。 vlc-1.1.9\vlc.exe --play-and-exit %WINDIR%\media\tada.wav
  • 请注意,当前版本 (1.1.9) 中的 VLC 已损坏 wrt 命令行参数。您无法设置音量,而且似乎还有更多命令行选项已损坏。刚刚快速测试,发现--start-time--width--greyscale也坏掉了(用视频测试,原因很明显)。 --fullscreen 有效,所以一般来说并不是命令行解析被破坏了。
  • “这里列出了一些”链接不再有效。
  • 投了反对票,因为答案链接到带有资源的页面,但是资源已经消失,这使得答案不再可用。
  • @M.leRutte - 更新了指向 archive.org 的有效链接。
【解决方案5】:

这就是我所做的:

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 窗口。
【解决方案6】:

您可能可以编写一个小的 VBScript,它将使用 Windows Media Player ActiveX 控件来播放音频文件。播放完毕后,您也应该能够从中终止该过程。

我正在环顾四周,也许可以提出一个可行的解决方案。不过可能需要一段时间。

【讨论】:

  • 这个答案几乎值得+1。它是一个 VBScript 示例。
【解决方案7】:

我正在使用 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"

【讨论】:

    【解决方案8】:

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

    我知道默认情况下它在人们的机器上不可用,但从我的角度来看,微软自己的播放器也不能在不同版本上始终可用。

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

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

    【讨论】:

      【解决方案9】:

      这里有几个脚本。

      mediarunner.bat - 它使用 windows 媒体播放器活动 x 对象,因此如果没有安装 Windows 媒体播放器,则无法使用(尽管它通常与 Windows 一起提供)。只接受一个参数 - 你想要的文件的路径玩。

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

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

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

      【讨论】:

        【解决方案10】:

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

        fmedia file1.mp3 file2.mp3
        

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

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

        fmedia file.ogg --background
        

        此命令将在后台启动一个新进程并立即与您的控制台分离。

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

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

        【讨论】:

          【解决方案11】:

          如果您需要跨平台的东西,mplayer 在 linux 和 windows 上运行良好,并且与 npm 的 play-sound 兼容。

          【讨论】:

            猜你喜欢
            • 2021-03-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-30
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多