在我的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
好吧,這是我上面寫的,我可以做到這一點。但是,我怎麼能說聲音不應該從一開始就開始,而是例如在開始幾秒鐘之後呢? –