在我的C#项目中,我想播放指定开始和结束时间的声音。如何在.Net中播放已定义开始和结束时间的声音
我使用System.Media.SoundPlayer
和.Play()
函数。但有了这个功能,我只能播放整个声音文件,或者可以在计算运行时间后中止播放。
事实上,我想说的是,给定的声音文件应该在时间1m:25s:30ms开始,并且应该在时间1m:50s:00ms处结束,或者在10s左右的时间之后结束。
有没有人知道他的问题的简单解决方案?
感谢4帮助。
在我的C#项目中,我想播放指定开始和结束时间的声音。如何在.Net中播放已定义开始和结束时间的声音
我使用System.Media.SoundPlayer
和.Play()
函数。但有了这个功能,我只能播放整个声音文件,或者可以在计算运行时间后中止播放。
事实上,我想说的是,给定的声音文件应该在时间1m:25s:30ms开始,并且应该在时间1m:50s:00ms处结束,或者在10s左右的时间之后结束。
有没有人知道他的问题的简单解决方案?
感谢4帮助。
在我使用n音讯库的结束。这可以解决这个问题 - 不是一个完美的方式,但可以。 看到https://stackoverflow.com/a/13372540/2936206
不是一个真正的答案,但这个问题让我想,如果你可以做这样的事情:
long startPositionInBytes = 512;
long endPositionInBytes = 2048;
using (var audioStream = File.OpenRead(@"audio.wav"))
{
audioStream.Position = startPositionInBytes;
using (var player = new SoundPlayer(audioStream))
{
player.Play();
do
{
Thread.Sleep(1);
} while (audioStream.Position <= endPositionInBytes);
player.Stop();
}
}
可以工作。但是你有没有想法,我怎样才能估计出时代的字节位置?它们受到采样率和压缩率的影响。 。 –
不是没有编写可以解释波形格式的代码,在这一点上,您可以继续并自己实现音频回放。 –
如果你要玩一个背景媒体播放器(用于例如,音频文件),它会从一个特定的时间开始,将工作了一定时间,那么这段代码片段也可能是有用的:
StorageFile mediaFile = await KnownFolders.VideosLibrary.GetFileAsync(fileName);//the path
BackgroundMediaPlayer.Current.SetFileSource(mediaFile);
BackgroundMediaPlayer.Current.Position = TimeSpan.FromMilliseconds(3000/*enter the start time here*/);
BackgroundMediaPlayer.Current.Play();
await Task.Delay(TimeSpan.FromMilliseconds(10000/*for how long you want to play*/));
BackgroundMediaPlayer.Shutdown();//stops the player
**但是,这只适用于Windows 8.1及以上版本。 欲了解更多信息,请单击here ...
看看这个:http://stackoverflow.com/questions/8531789/how-to-play-a-music-file-for-a-specified-amount-of时间 – John
好吧,这是我上面写的,我可以做到这一点。但是,我怎么能说声音不应该从一开始就开始,而是例如在开始几秒钟之后呢? –