zoukankan      html  css  js  c++  java
  • 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大小,果断放弃了,看网上其他人做的,效果应该还不错。

  • 相关阅读:
    Golang 单例模式 singleton pattern
    golang可见性规则(公有与私有,访问权限)
    golang init方法和main方法初始化顺序
    Golang的面向对象编程【结构体、方法、继承、接口】
    Convert Sorted List to Binary Search Tree——将链表转换为平衡二叉搜索树 &&convert-sorted-array-to-binary-search-tree——将数列转换为bst
    C/C++程序到内存分配(转)
    有关C/C++指针的经典面试题(转)
    C结构体之位域(位段)(转)
    Balanced Binary Tree——数是否是平衡,即任意节点左右字数高度差不超过1
    Path SumI、II——给出一个数,从根到子的和等于它
  • 原文地址:https://www.cnblogs.com/chuhaida/p/4261516.html
Copyright © 2011-2022 走看看