使用cscore制作播放器
时间: 2023-12-10 17:40:57 浏览: 26
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>
```
使用以上代码,便可以创建一个简单的音频播放器。