C#语音播放引擎cscore及其播放器

最近在找一个C#语音播放器的时候,才发现这个几乎很难找到,当然也存在自己找资料不太全的问题。


但是至少这个是存在的,常见的还是Naudio的东西。但是说实话,除非XAML的WPF东西,不然Naudio做出来的界面化东西还真不怎样。


不过幸运的是,Naudio平台也出来了一个界面化渲染的东西,也支持多种渲染方式。试验了下,效果还是不错,只是没有将播放与控制放在一起,很多操作还是不便。


于是继续寻找,换个搜索方式,还是看到了cscore, 代码网址是:https://github.com/filoe/cscore


最主要的发现,它有很多采用它底层库的网站,而且还不少。在网页介绍如下:

Some projects using already using cscore:

  • DopamineAn music player which tries to keep listening to music clean and simple.
  • HurricaneIs a powerful music player written in C# based on CSCore sound library.
  • Sharpex2D: A game engine which allows you to create beautiful 2D games under .NET for Windows and Mono compatible systems
  • Turnt-Ninja: A beat-fighting-ninja-like-get-turnt rhythm game inspired by the wonderful Super Hexagon by Terry Cavanagh.
  • HTLED: A audio visualization displayed on a selfmade 32x16 LED matrix.
  • ...

非常不错的东西。


再继续往下挖,发现有不少基本它做的界面化的控制,非常轻便,而且可以很方便控制。如其中一个很小的代码就可以实现如下的效果:



在一番改写之后,已经满足要求。特此记录一下,也为大家找资料提供一个入口。


当然也看了下cscore的源码,里面的内核非常全,还把ffmpeg也支持进来了,非常不错。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
cscore是一种C#语言的音频处理库,可以用于实现音频播放器。下面是一个简单的示例代码,可以使用WPF创建一个简单的音频播放器: ```csharp using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using CSCore; using CSCore.Codecs; using CSCore.CoreAudioAPI; using CSCore.SoundOut; namespace AudioPlayer { public partial class MainWindow : Window { private ISoundOut _soundOut; private IWaveSource _waveSource; public MainWindow() { InitializeComponent(); } private void OpenButton_Click(object sender, RoutedEventArgs e) { var openFileDialog = new Microsoft.Win32.OpenFileDialog(); openFileDialog.Filter = "音频文件 (*.mp3;*.wav)|*.mp3;*.wav|所有文件 (*.*)|*.*"; if (openFileDialog.ShowDialog() == true) { Stop(); DisposeWaveSource(); _waveSource = CodecFactory.Instance.GetCodec(openFileDialog.FileName) .ToSampleSource() .ToWaveSource(); _soundOut = new WasapiOut(); _soundOut.Initialize(_waveSource); slider.Maximum = _waveSource.GetLength().TotalSeconds; Play(); } } private void PlayButton_Click(object sender, RoutedEventArgs e) { Play(); } private void PauseButton_Click(object sender, RoutedEventArgs e) { Pause(); } private void StopButton_Click(object sender, RoutedEventArgs e) { Stop(); } private void Play() { if (_soundOut != null && _waveSource != null) { _soundOut.Play(); } } private void Pause() { if (_soundOut != null && _waveSource != null) { _soundOut.Pause(); } } private void Stop() { if (_soundOut != null && _waveSource != null) { _soundOut.Stop(); } } private void DisposeWaveSource() { if (_waveSource != null) { _waveSource.Dispose(); _waveSource = null; } } private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { Stop(); DisposeWaveSource(); if (_soundOut != null) { _soundOut.Dispose(); _soundOut = null; } } private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { if (_waveSource != null) { _waveSource.SetPosition(TimeSpan.FromSeconds(slider.Value)); } } } } ``` 在XAML文件中,可以添加仅包含按钮和滑块的简单界面: ```xml <Window x:Class="AudioPlayer.MainWindow" ... Title="Audio Player" Height="200" Width="400" Closing="Window_Closing"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Button x:Name="OpenButton" Content="打开" Click="OpenButton_Click"/> <Button x:Name="PlayButton" Content="播放" Click="PlayButton_Click" Grid.Row="1"/> <Button x:Name="PauseButton" Content="暂停" Click="PauseButton_Click" Grid.Row="1" Grid.Column="1"/> <Button x:Name="StopButton" Content="停止" Click="StopButton_Click" Grid.Row="1" Grid.Column="2"/> <Slider x:Name="slider" Grid.Row="2" ValueChanged="Slider_ValueChanged"/> </Grid> </Window> ``` 使用以上代码,便可以创建一个简单的音频播放器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值