物联网媒体播放器噪音
iot media player noise
我正在使用 VS 2015 在 raspberri pi 3 上开发 UWP,我的 mediaPlayer 对象有问题。它工作正常,但在每个文件的开头和结尾都有噪音,我需要一个一个地播放一些小的 MP3(或任何其他编解码器)文件,在每个文件之间我听到两个让我烦恼的噪音。任何机构都有解决方案。我检查了我 PC 中的文件,其中没有噪音,这些噪音只发生在 UWP 中。代码如下:
async Task PlayVoice()
{
MediaPlayer player = BackgroundMediaPlayer.Current;
player.AutoPlay = true;
player.RemoveAllEffects();
player.MediaEnded += MediaPlayer_Loop;
player.Volume = 1;
player.SetUriSource(new Uri("ms-appx:///Assets/Sound/" + f[vc] + ".mp3"));
vc++;
}
void MediaPlayer_Loop(MediaPlayer player, object e)
{
if (player == null)
return;
if (vc >= f.Length)
return;
player.SetUriSource(new Uri("ms-appx:///Assets/Sound/" + f[vc] + ".mp3"));
vc++;
}
在一个音频停止之后和下一个音频开始之前,它们之间有一个间隙,这会让听众感到烦恼。您可以尝试使用 MediaPlaybackList 因为 items in a MediaPlaybackList are rendered using gapless playback。代码如下:
void PlayBackList()
{
MediaPlaybackList mediaPlaybackList;
MediaSource mediaSource;
MediaPlaybackItem mediaPlaybackItem;
MediaElement mediaElement = new MediaElement();
mediaPlaybackList = new MediaPlaybackList();
for (vc = 0; vc < f.Count; vc++)
{
mediaSource = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/Sound/" + f[vc] + ".wma"));
mediaPlaybackItem = new MediaPlaybackItem(mediaSource);
mediaPlaybackList.Items.Add(mediaPlaybackItem);
}
mediaPlaybackList.AutoRepeatEnabled = true;
mediaElement.SetPlaybackSource(mediaPlaybackList);
mediaElement.AutoPlay = true;
mediaElement.Play();
}
此外,问题表现为在输出声音之前和停止输出声音之后发出很大的爆裂声或咔哒声。这是因为正在使用 BCM2835 CPU 的 PWM 输出,而不是标准 DAC。当 PWM 功能被激活时,输出电压会发生跳跃,从而导致爆音。更详细的解释是here.
我正在使用 VS 2015 在 raspberri pi 3 上开发 UWP,我的 mediaPlayer 对象有问题。它工作正常,但在每个文件的开头和结尾都有噪音,我需要一个一个地播放一些小的 MP3(或任何其他编解码器)文件,在每个文件之间我听到两个让我烦恼的噪音。任何机构都有解决方案。我检查了我 PC 中的文件,其中没有噪音,这些噪音只发生在 UWP 中。代码如下:
async Task PlayVoice()
{
MediaPlayer player = BackgroundMediaPlayer.Current;
player.AutoPlay = true;
player.RemoveAllEffects();
player.MediaEnded += MediaPlayer_Loop;
player.Volume = 1;
player.SetUriSource(new Uri("ms-appx:///Assets/Sound/" + f[vc] + ".mp3"));
vc++;
}
void MediaPlayer_Loop(MediaPlayer player, object e)
{
if (player == null)
return;
if (vc >= f.Length)
return;
player.SetUriSource(new Uri("ms-appx:///Assets/Sound/" + f[vc] + ".mp3"));
vc++;
}
在一个音频停止之后和下一个音频开始之前,它们之间有一个间隙,这会让听众感到烦恼。您可以尝试使用 MediaPlaybackList 因为 items in a MediaPlaybackList are rendered using gapless playback。代码如下:
void PlayBackList()
{
MediaPlaybackList mediaPlaybackList;
MediaSource mediaSource;
MediaPlaybackItem mediaPlaybackItem;
MediaElement mediaElement = new MediaElement();
mediaPlaybackList = new MediaPlaybackList();
for (vc = 0; vc < f.Count; vc++)
{
mediaSource = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/Sound/" + f[vc] + ".wma"));
mediaPlaybackItem = new MediaPlaybackItem(mediaSource);
mediaPlaybackList.Items.Add(mediaPlaybackItem);
}
mediaPlaybackList.AutoRepeatEnabled = true;
mediaElement.SetPlaybackSource(mediaPlaybackList);
mediaElement.AutoPlay = true;
mediaElement.Play();
}
此外,问题表现为在输出声音之前和停止输出声音之后发出很大的爆裂声或咔哒声。这是因为正在使用 BCM2835 CPU 的 PWM 输出,而不是标准 DAC。当 PWM 功能被激活时,输出电压会发生跳跃,从而导致爆音。更详细的解释是here.