PowerShell/Scripts/play-mp3.ps1
2021-05-06 16:19:50 +02:00

41 lines
1.3 KiB
PowerShell
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<#
.SYNTAX play-mp3.ps1 [<MP3-file>]
.DESCRIPTION plays the given sound file (MP3 file format)
.LINK https://github.com/fleschutz/PowerShell
.NOTES Author: Markus Fleschutz / License: CC0
#>
param($Filename = "")
if ($Filename -eq "" ) { $Filename = read-host "Enter the MP3 filename" }
try {
if (-not(test-path "$Filename" -pathType leaf)) { throw "Can't access audio file: $Filename" }
$FullPath = (get-childItem $Filename).fullname
$Filename = (get-item "$FullPath").name
add-type -assemblyName PresentationCore
$MediaPlayer = new-object System.Windows.Media.MediaPlayer
do {
$MediaPlayer.open($FullPath)
$Milliseconds = $MediaPlayer.NaturalDuration.TimeSpan.TotalMilliseconds
} until ($Milliseconds)
[int]$Minutes = $Milliseconds / 60000
[int]$Seconds = ($Milliseconds / 1000) % 60
"Playing for $($Minutes.ToString('00')):$($Seconds.ToString('00')) sec.: 🎵$Filename ..."
$PreviousTitle = $host.ui.RawUI.WindowTitle
$host.ui.RawUI.WindowTitle = "▶️$Filename"
$MediaPlayer.Volume = 1
$MediaPlayer.play()
start-sleep -milliseconds $Milliseconds
$MediaPlayer.stop()
$MediaPlayer.close()
$host.ui.RawUI.WindowTitle = $PreviousTitle
exit 0
} catch {
write-error "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
exit 1
}