WPF播放声音的三种方法

WPF播放声音的三种方法

2023年7月19日发(作者:)

WPF播放声⾳的三种⽅法⽅法⼀:古⽼的SoundPlayer类  它是.NET Framework 2.0的⼀部分,是对Win32 PlaySound API的封装。  它具有以下限制:  1)仅⽀持.wav⾳频⽂件;  2)不⽀持同时播放多个⾳频(任何新播放的操作将终⽌当前正在播放的);  3)⽆法控制声⾳的⾳量;  下⾯的代码展⽰了如何使⽤SoundPlayer播放声⾳:SoundPlayer player = new SoundPlayer("");();  传递给SoundPlayer构造函数的字符串可以是本地的⼀个⽂件名,也可以是⽹络上的⽂件。调⽤Play⽅法将异步播放声⾳。如果想同步播放声⾳,可以使⽤PlaySync⽅法。当然,想异步循环播放,可以使⽤PlayLooping⽅法,直到你调⽤Stop或重新播放⼀个新的声⾳为⽌。  需要说明的是,声⾳⽂件直到第⼀次播放时才会被加载。如果声⾳⽂件的加载需要很长的时间,例如从⽹络来,使⽤同步播放,会导致UI死掉。出于这个原因考虑,SoundPlayer类也定义了Load和LoadAsync⽅法以便在第⼀次播放之前提前加载声⾳⽂件。  如果你想播放系统声⾳,但记不住他们的⽂件名,可以⽤SystemSounds类中的⼀些静态属性:Asterisk,Beep,Exclamation,Hand,Question。每个类型都有⾃⼰的Play⽅法,⽤来异步播放系统声⾳。⽐如:();PS:此⽅法在Winform也可以使⽤,只需using ;⽅法⼆:.NET Framework 3.0新增的MediaPlayer类  基于Windows Media Player构建起来的,因此⽀持Windows Media Player能播放的格式。  MediaPlayer具有以下特性  1)可以同时播放多个声⾳(创建多个MediaPlayer对象);  2)可以调整⾳量(Volume属性);  3)可以使⽤Play,Pause,Stop等⽅法进⾏控制;  4)可以设置IsMuted属性为True来实现静⾳;  5)可以⽤Balance属性来调整左右扬声器的平衡;  6)可以通过SpeedRatio属性控制⾳频播放的速度;  7)可以通过NaturalDuration属性得到⾳频的长度,通过Position属性得到当前播放进度;  8)可以通过Position属性进⾏Seek;下⾯的代码展⽰了如何使⽤MediaPlayer播放声⾳:MediaPlayer player = new MediaPlayer();(new Uri("3", ve));();

注意: MediaPlayer player = new MediaPlayer();不能在事件处理中,⼩丸起初将这三⾏代码放在⼀个按钮Click事件中,播放⼏秒后直接被GC⼲掉,将这句移到事件外即可解决。MediaPlayer player = new MediaPlayer();private void Button_Click(object sender, RoutedEventArgs e){(new Uri("3", ve));();}PS:此⽅法在Winform也可以使⽤,在引⽤中添加PresentationCore并using 即可。 ⽅法三:WPF特有的MediaElement元素  在WPF 中可以使⽤MediaElement为应⽤程序添加媒体播放控件,以完成播放⾳频、视频功能。由于MediaElement 属于UIElement,所以它同时也⽀持⿏标及键盘的操作。  XAML

MediaOpened="mediaElement1_MediaOpened" Visibility="Collapsed" />  ();

总结:⽅法⼀:适⽤于播放简短的⾳效,特别是调⽤系统⾳效超⽅便。⽅法⼆:如果做Winform的话建议⽤这个,已经提供了⼀个播放器的基本功能。⽅法三:WPF限定的⽅法,最便捷省⼒且可以直接⽤XAML修改属性

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689721154a280974.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信