Фоновый плеер для cmd

bum

Новый пользователь
Сообщения
4
Реакции
0
Мне нужен плеер который бы мог открывать mp3 в фоновом режиме.
Запуск например может быть такой
Код:
start D:\player.exe D:\music.mp3
 
Через nircmd.

CMD/BATCH:
nircmd mediaplay 10000 "D:\music.mp3"
Число - кол-во миллисекунд воспроизведения.
 
Последнее редактирование модератором:
Придумал вариант на основе mshta (окна hta application на время воспроизведения файла будет свернуто):

CMD/BATCH:
@echo off
SetLocal EnableExtensions

set "mp3=c:\windows\media\tada.wav"

:: кол-во секунд воспроизведения
set delay=2

call :PlaySnd "%mp3%" %delay%

pause
goto :eof


:PlaySnd [Path] [Delay]
  set "SndPath=%~1"
  set "SndPath=%SndPath:\=\\%"
  start /min mshta "about:<bgsound id=sound><script>document.all.sound.src = '%SndPath%'</script>"
  set /a delay2=%~2+1
  Timeout /? >NUL 2>&1 & if errorlevel 9009 (>NUL ping -n %delay2% 127.1) else (>NUL Timeout /T %~2 /Nobreak)

  for /f "tokens=2 delims=," %%a in ('tasklist /fo csv /nh /fi "IMAGENAME eq cmd.exe" 2^>NUL') do (
    for /f "UseBackQ skip=2 tokens=2 delims=," %%b in (`wmic process where "ParentProcessId=%%~a and caption='mshta.exe'" get ProcessId /format:csv 2^>NUL`) do (
      for /f "delims=" %%c in ("%%b") do taskkill /f /pid %%c >NUL
  ))
exit /B
 
Последнее редактирование:
Еще варианты на VBScript:

1) Для воспроизведения только wav формата:

VB.NET / VBA:
Set oVoice = CreateObject("SAPI.SpVoice")
set oSpFileStream = CreateObject("SAPI.SpFileStream")
oSpFileStream.Open "c:\Windows\Media\tada.wav"
oVoice.SpeakStream oSpFileStream
oSpFileStream.Close
oVoice.Speak "Finished Playing wave file."
Класс воспроизведения mp3 / wmv / wav ...

Автор: Xameleon (серый форум)

1)
Пример показывает возможность воспроизведения произвольных аудио-файлов в скриптах с использованием COM-объекта "WMPlayer.OCX" (Windows Media Player). Демонстрируется регулирование баланса и громкости, определение длины записи в секундах. Обратите внимание, что в целом объект обладает значительно большим функционалом (плейлисты, настройка частоты, настройка скорости проигрывания и т.п.), чем показано в этом примере.

VB.NET / VBA:
Set WMPlayer = New WMPlayerClass

Dim FilePath

'/// Так же можно указать URl - ссылку на файл в интернете
FilePath = "C:\WINDOWS\Media\chimes.wav"

'/// Открываем ресурс
WMPlayer.OpenMedia FilePath

'/// Выводим длительность файла
msgbox "Длительность файла: " & WMPlayer.CurrentMedia.DurationString,vbInformation,"WMPlayerClass"

'/// проверка изменения громкости
msgbox "Сейчас будет произведена проверка изменения громкости звука. Эффект эхо. 100% 50% 10%"
WMPlayer.Settings.Volume = 100
WMPlayer.Play
WMPlayer.Settings.Volume = 50
WMPlayer.Play
WMPlayer.Settings.Volume = 10
WMPlayer.Play

'/// проверка изменения баланса
MsgBox "Сейчас будет произведена проверка баланса. (левого и правого динамика)",vbInformation,"WMPlayerClass"
WMPlayer.Settings.Volume = 100
WMPlayer.Settings.Balance = -100
WMPlayer.Play
WMPlayer.Settings.Balance = 100
WMPlayer.Play

MsgBox "Проверка завершена.",vbInformation,"WMPlayerClass"

'/// Класс проигрывателя
Class WMPlayerClass
    '/// Переменная для хранения ссылки на объект плеера
    Dim WMPlayer
    Private Sub Class_Initialize()
        Set WMPlayer = CreateObject("WMPlayer.OCX")
        WMPlayer.settings.autoStart = False
        WMPlayer.settings.enableErrorDialogs = False
    End Sub

    '/// Свойство возвращает ссылку на объект настроек плеера
    Public Property Get Settings
        Set Settings = WMPlayer.Settings
    End Property

    '/// Метод подключения к ресурсу
    Function OpenMedia(URL)
        '/// Несколько из констант состояния открытия
        Const wmposMediaLoading = 11
        Const wmposMediaLocating = 9
        Const wmposPlaylistOpenNoMedia = 6
        Const wmposMediaOpen = 13
        Const wmposPlaylistOpening = 5
        Const wmposOpeningUnknownURL = 21
        Const wmposUndefined = 0

        '/// Для корректного получения данных о содержимом, нужно открыть ресурс.
        WMPlayer.URL = URL
        '/// Убираем звук      
        WMPlayer.settings.mute=true
        '/// Запускаем на проигрывание
        WMPlayer.controls.Play
        '/// Ждём состояния открытия файла. Если файл открыть не удалось вернётся wmposPlaylistOpenNoMedia
        Do
            WScript.Sleep 10
        Loop Until WMPlayer.OpenState = wmposMediaOpen or WMPlayer.OpenState=wmposPlaylistOpenNoMedia
        '/// Останавливаем проигрывание
        WMPlayer.controls.Stop
        '/// Возвращаем звук
        WMPlayer.settings.mute=false
    End Function

    '/// Свойство возвращает ссылку на параметры открытого файла
    Public Property Get CurrentMedia
        Set CurrentMedia = WMPlayer.CurrentMedia
    End Property

    '/// Метод запуска проигрывания
    Function Play()
        WMPlayer.Controls.Play
        '/// Ожидаем окончания проигрывания (ждём пока плеер не перейдёт в состояние остановки)
        Do
            WScript.Sleep 100
        Loop Until WMPlayer.playState = 1
    End Function
End Class

2)
Пример показывает возможность воспроизведения произвольных аудио-файлов в скриптах с использованием ActiveX Windows Media Player так, как он используется на HTML-страницах. Пример интересен использованием объекта "htmlfile", который может "эмулировать" HTML-страницу в скриптах, не имеющих графического интерфейса.

VB.NET / VBA:
'/// Создаём класс проигрывателя
Set WMP = New WindowsMediaPlayerClass

'/// Открываем и проигрываем файлы
WMP.Play "C:\Windows\media\chimes.wav"
WMP.Play "C:\Windows\media\ringin.wav"
WMP.Play "C:\Windows\media\ding.wav"

MsgBox "Playing Complete.",vbInformation,"Windows Media Player"

'/// Класс Windows Media Player-a
Class WindowsMediaPlayerClass
    '/// Т.к создать Windows Media Player имеет только CLASSID, то создадим его в контейнере HTMLDocument
    Private Document,WMP
  
    '/// Событие инициализации класса
    Private Sub Class_Initialize
        '/// Создаём HTMLDocument
        Set Document = Wscript.CreateObject("htmlfile")
        '/// Выполняем методы Open и Close, чтобы создалось Body
        Document.open
        Document.close
        '/// Создаём с помошью документа объект проигрывателя
        Set WMP = Document.createElement("OBJECT")
        '/// Добавляем его в документ
        Document.body.appendChild WMP
        '/// Указываем его классид ( Кстати таким способом можно создавать и другие объекты имеющие только CLASSID)
        '/// Хотя наверняка есть и более удобные способы
        WMP.classid = "CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95"
        'WMP.AutoRewind = True
        'WMP.AutoStart = True
    End Sub

    '/// Метод запуска проигрывания файла
    Public Sub Play(FileName)
        '/// Если имя файла не указано, то выходим из процедуры
        if FileName = "" Then Exit Sub
        '/// Передаём имя файла для проигрывания
        WMP.FileName = FileName
        '/// Запуск проигрывания
        WMP.Play
        '/// Запускаем цикл и ждём пока проигрывание остановится
        Do
            '/// Притормаживаем выполнение, чтобы цикл не отнимал 100% процессорного времени
            Wscript.Sleep 100
        Loop Until WMP.PlayState = 0
    End Sub
End Class
 
Последнее редактирование:
Kirik-Helper,
код в тегах "DOS" - это бат-файлы. Они создаются так: https://safezone.cc/threads/kak-sozdat-batnik-paketnyj-fajl-cmd-bat.23960/
код в тегах "VB.NET" (на самом деле VBS, просто расцветка красивее) - это сценарии VBScript. Они создаются так: https://safezone.cc/threads/kak-sozdat-fajl-vbs-vbscript.25352/

Файлы сразу будут готовы к запуску (если я ничего не напутал в коде, и в системе нет никакого косяка).
 
Последнее редактирование:
Назад
Сверху Снизу