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条)