• WPF 播放音频使用的SoundPlayer和MediaPlayer


    WPF中,最简单最容易播放音频的方式是使用SoundPlayer类。它是.NET Framework 2.0的一部分,是对Win32 PlaySound API的封装。

             它具有以下限制:

    1)仅支持.wav音频文件;

    2)不支持同时播放多个音频(任何新播放的操作将终止当前正在播放的);

    3)无法控制声音的音量;

    下面的代码展示了如何使用SoundPlayer播放声音:

        SoundPlayer player = new SoundPlayer("BLOW.WAV");

        player.Play();

    传递给SoundPlayer构造函数的字符串可以是本地的一个文件名,也可以是网络上的文件。调用Play方法将异步播放声音。如果想同步播放声音,可以使用PlaySync方法。当然,想异步循环播放,可以使用PlayLooping方法,直到你调用Stop或重新播放一个新的声音为止。

             需要说明的是,声音文件直到第一次播放时才会被加载。如果声音文件的加载需要很长的时间,例如从网络来,使用同步播放,会导致UI死掉。出于这个原因考虑,SoundPlayer类也定义了Load和LoadAsync方法以便在第一次播放之前提前加载声音文件。

             如果你想播放系统声音,但记不住他们的文件名,可以用SystemSounds类中的一些静态属性:Asterisk,Beep,Exclamation,Hand,Question。每个类型都有自己的Play方法,用来异步播放系统声音。

        二、使用WPF专用的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 ();

        player.Open(new Uri("BLOW.WAV", UriKind.Relative));

        player.Play();

    一个MediaPlayer对象一次只能播放一个文件。而且该文件是异步播放的,你也可以调用Close来释放文件。

    (提一下,MediaPlayer在XP下需要window media player比较高版本的支持,不然没有声音。SoundPlayer就不需要),这个有点略坑

    三、使用COM组建的window media player。

    看到调用的com组建足足有十几MB大小,果断放弃了,看网上其他人做的,效果应该还不错。

  • 相关阅读:
    hdu 4162 Shape Number 最小表示法
    codeforces 416B. Appleman and Tree 树形dp
    codeforces 167B . Wizards and Huge Prize 概率dp
    codeforces 617E. XOR and Favorite Number 莫队
    angularJs问题:获取按钮 token < 80 8888 localhost:63342 统一字母大小写
    移动端页面布局需要注意的一些问题
    jqm(jquery mobile)做页面中出现诡异的&nbsp;
    页面中出现诡异的双引号""
    js、jq不能正常执行
    hdu 1874 畅通工程(spfa 邻接矩阵 邻接表)
  • 原文地址:https://www.cnblogs.com/chuhaida/p/4261516.html
Copyright © 2020-2023  润新知