如何在Blazor应用的服务器端播放音频?局域网点歌机开发需求
服务器端音频播放方案(Blazor局域网点歌设备)
Windows平台实现
利用Windows原生媒体播放API(适配.NET环境,Blazor Server模式下直接在服务器端运行)
using Windows.Media.Playback; using Windows.Storage; public async Task PlayServerAudio(string audioFilePath) { var audioFile = await StorageFile.GetFileFromPathAsync(audioFilePath); var mediaPlayer = new MediaPlayer(); mediaPlayer.Source = MediaSource.CreateFromStorageFile(audioFile); mediaPlayer.Play(); }注意:仅适用于Windows服务器,且Blazor需采用Server模式而非WASM模式。
第三方库NAudio(兼容性更强,支持多音频格式)
using NAudio.Wave; public void PlayServerAudio(string audioFilePath) { using var audioReader = new AudioFileReader(audioFilePath); using var waveOutput = new WaveOutEvent(); waveOutput.Init(audioReader); waveOutput.Play(); // 如需等待播放结束,可监听PlaybackStopped事件 }
Linux平台实现
调用系统ALSA工具
aplay(轻量无需额外.NET库)using System.Diagnostics; public void PlayServerAudio(string audioFilePath) { var playProcess = new ProcessStartInfo { FileName = "aplay", Arguments = audioFilePath, RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true }; Process.Start(playProcess); }前置操作:先安装ALSA工具包,执行命令
sudo apt-get install alsa-utils。跨平台音频库AudioSharp
using AudioSharp; using AudioSharp.WaveOut; public void PlayServerAudio(string audioFilePath) { using var audioReader = new AudioFileReader(audioFilePath); using var waveOutput = new WaveOut(); waveOutput.Init(audioReader); waveOutput.Play(); }
Blazor交互要点
- Blazor Server模式下,前端通过按钮点击触发服务器端方法(依赖SignalR通信),直接调用上述播放逻辑即可。
- 权限配置:
- Windows:远程桌面环境下需启用音频重定向;本地运行无需额外权限。
- Linux:将运行Blazor服务的用户加入
audio组,执行sudo usermod -aG audio [你的服务用户名]。
内容的提问来源于stack exchange,提问作者user13720755
相关产品推荐
相关产品推荐

