none
WP8.1 后台使用 MediaElement 为什么没声音? RRS feed

  • 问题

  • //Me 静态类:

    public static MediaElement Me1= new MediaElement() { Source = new Uri("ms-appx:///Assets/Audio/Me1.wav", UriKind.Absolute), AutoPlay = false };

    //。。。省略其他静态的 MediaElement 音频资源

    public static void Play(MediaElement me) { me.Position = new TimeSpan(0, 0, 0); me.Play(); }

    前台 Xaml 写的能播放声音。但我的播放音频的代码是在另一个类中使用,所以没法访问 Xaml 中的 MediaElement ,所以写了一个管理 MediaElement 资源的静态类,结果却没声音!

    2014年10月27日 13:50

答案

  • 我还用了另一种方法:

    Xaml:

    <MediaElement x:Name="audio1" AutoPlay="False" Source="Assets/Audio/xxx.wav" />

    <省略其他 MediaElement。。。>

    Xaml.cs:

            public void PlayGameEffects(MediaElement me)
            {
                if (!_isMuted)
                {
                    me.Position = TimeSpan.Zero;
                    me.Play();
                }
            }
    这样,在 XAML 中就添加 MediaElement 控件,但还是会有异常,难道是因为播放的间隔太短造成的?不过之前有一段时间完全没问题,说不过去啊!

    特别补充下:我的音频是(显示)0秒的(因为是音效,很短促),如果连续播放 audio1,没问题,但连续播放另一个音频就可能有异常了,好奇怪的说!

    你好,

    我注意到你的这段代码:

    if (!_isMuted)
    {
                    me.Position = TimeSpan.Zero;
                    me.Play();
    }

    不知道你的 _isMuted 变量是指的什么,对于音频播放异常的问题,建议按照我之前的回复,去检测MediaElement 的当前状态,如果正在播放,暂停再次播放:https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b0b0771d-123b-4402-9c0b-49975ad2cdf7/wp81-?forum=wpappszh

    >>特别补充下:我的音频是(显示)0秒的(因为是音效,很短促),如果连续播放 audio1,没问题,但连续播放另一个音频就可能有异常了,好奇怪的说

    我选取了几个接近0秒的短音频,没有发现你出现的问题(真机上测试),请确认是否是你的音频文件问题。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年10月29日 9:45
    版主

全部回复

  • 你好 CodingNinja8.1,

    >>MediaElement 资源的静态类,结果却没声音!

    根据我的经验,在WP中,要使得 MediaElement 可以正常播放声音,必须要在XAML中添加MediaElement控件。这个我在模拟器和真机中已经测试过。

    在你之前的帖子中:http://social.msdn.microsoft.com/Forums/en-US/b0b0771d-123b-4402-9c0b-49975ad2cdf7

    我提供了Blend SDK的 PlaySoundAction去实现: http://msdn.microsoft.com/en-us/library/windows/apps/microsoft.xaml.interactions.media.playsoundaction.aspx

    现在还有一种方法实现,就是使用BackgroundMediaPlayer:http://msdn.microsoft.com/en-us/library/windows.media.playback.backgroundmediaplayer.aspx

    简单的示例代码:

    BackgroundMediaPlayer.Current.SetUriSource(new Uri("ms-appx:///Assets/Media/Heartbeats.mp3",UriKind.RelativeOrAbsolute));
    BackgroundMediaPlayer.Current.Play();

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已建议为答案 LiquanFang 2014年10月29日 1:03
    2014年10月28日 15:48
    版主
  • 在WP中实现播放话页面上要有播放控件才可以。对于你的情况可以考虑用使用BackgroundMediaPlayer实现播放

    爱编程 爱生活

    2014年10月29日 1:04
  • 我还用了另一种方法:

    Xaml:

    <MediaElement x:Name="audio1" AutoPlay="False" Source="Assets/Audio/xxx.wav" />

    <省略其他 MediaElement。。。>

    Xaml.cs:

            public void PlayGameEffects(MediaElement me)
            {
                if (!_isMuted)
                {
                    me.Position = TimeSpan.Zero;
                    me.Play();
                }
            }
    这样,在 XAML 中就添加 MediaElement 控件,但还是会有异常,难道是因为播放的间隔太短造成的?不过之前有一段时间完全没问题,说不过去啊!

    特别补充下:我的音频是(显示)0秒的(因为是音效,很短促),如果连续播放 audio1,没问题,但连续播放另一个音频就可能有异常了,好奇怪的说!
    2014年10月29日 6:23
  • 我还用了另一种方法:

    Xaml:

    <MediaElement x:Name="audio1" AutoPlay="False" Source="Assets/Audio/xxx.wav" />

    <省略其他 MediaElement。。。>

    Xaml.cs:

            public void PlayGameEffects(MediaElement me)
            {
                if (!_isMuted)
                {
                    me.Position = TimeSpan.Zero;
                    me.Play();
                }
            }
    这样,在 XAML 中就添加 MediaElement 控件,但还是会有异常,难道是因为播放的间隔太短造成的?不过之前有一段时间完全没问题,说不过去啊!

    特别补充下:我的音频是(显示)0秒的(因为是音效,很短促),如果连续播放 audio1,没问题,但连续播放另一个音频就可能有异常了,好奇怪的说!

    你好,

    我注意到你的这段代码:

    if (!_isMuted)
    {
                    me.Position = TimeSpan.Zero;
                    me.Play();
    }

    不知道你的 _isMuted 变量是指的什么,对于音频播放异常的问题,建议按照我之前的回复,去检测MediaElement 的当前状态,如果正在播放,暂停再次播放:https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b0b0771d-123b-4402-9c0b-49975ad2cdf7/wp81-?forum=wpappszh

    >>特别补充下:我的音频是(显示)0秒的(因为是音效,很短促),如果连续播放 audio1,没问题,但连续播放另一个音频就可能有异常了,好奇怪的说

    我选取了几个接近0秒的短音频,没有发现你出现的问题(真机上测试),请确认是否是你的音频文件问题。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年10月29日 9:45
    版主