我正在四处寻找BackgroundAudioPlayer
的开始和结束位置。虽然我可以设置开始位置,但我也希望设置结束位置。
假设我的音频文件是22分钟,用户只希望从10分钟到18分钟听到。是否有可能在BackgroundAudioPlayer
设置开始和结束位置?
谢谢!
答案 0 :(得分:0)
我对桌面应用程序遇到了这个挑战,我通过启动计时器并将勾号时间设置为位置stop-start 来解决它。当计时器启动时,您将停止音频播放器和计时器。
您也可以使用线程执行此操作,但计时器似乎是一个更清洁的解决方案。下面找一个例子 - 虽然我使用属于GUI的MediaElement(这就是我使用pinvoke的原因)。
void sndPlayer_MediaOpened(object sender, EventArgs e)
{
// Set the current position in the recording
sndPlayer.Position = currentRecording.tPosition;
// Start playing
sndPlayer.Play();
// Schedule a function to stop the player
timerControlPlayer.Interval = (double)currentDuration * 1000.0;
timerControlPlayer.Start();
}
void timerControlPlayer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
// We don't need the timer to pop in again
timerControlPlayer.Stop();
// Access the gui thread (the sound player belongs to that one)
guiDispatcher.Invoke(() =>
{
sndPlayer.Stop();
SoundPlayed(this, new SoundPlayedEventArgs(currentRecording.nSpeakerCount));
sndPlayer.Close();
});
}
// Used as an elegant solution to start / stop the sound player
timerControlPlayer = new System.Timers.Timer();
timerControlPlayer.Elapsed += timerControlPlayer_Elapsed;