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大小,果断放弃了,看网上其他人做的,效果应该还不错。

  • 相关阅读:
    OSX安装nginx和rtmp模块(rtmp直播服务器搭建)
    用runtime来重写Coder和deCode方法 归档解档的时候使用
    Homebrew安装卸载
    Cannot create a new pixel buffer adaptor with an asset writer input that has already started writing'
    OSX下面用ffmpeg抓取桌面以及摄像头推流进行直播
    让nginx支持HLS
    iOS 字典转json字符串
    iOS 七牛多张图片上传
    iOS9UICollectionView自定义布局modifying attributes returned by UICollectionViewFlowLayout without copying them
    Xcode6 iOS7模拟器和Xcode7 iOS8模拟器离线下载
  • 原文地址:https://www.cnblogs.com/chuhaida/p/4261516.html
Copyright © 2011-2022 走看看