Silverlight SL媒体元素赢得';I don’第一次之后,我不会播放我的wave文件
我使用library在silverlight媒体元素上播放wave文件。Silverlight SL媒体元素赢得';I don’第一次之后,我不会播放我的wave文件,silverlight,wav,mediaelement,wavmss,Silverlight,Wav,Mediaelement,Wavmss,我使用library在silverlight媒体元素上播放wave文件。 当我第一次将文件加载到元素中时,它会播放,但当我第二次尝试播放时,它不会播放。 我用的是来自中国的样品 也许我遗漏了什么,这是我打开wave文件并首次成功播放的代码,这是我的媒体元素中的文件读取和设置为源: OpenFileDialog openFileDialog = new OpenFileDialog(); MemoryStream audioSource = new MemoryStream(); if
当我第一次将文件加载到元素中时,它会播放,但当我第二次尝试播放时,它不会播放。
我用的是来自中国的样品 也许我遗漏了什么,这是我打开wave文件并首次成功播放的代码,这是我的媒体元素中的文件读取和设置为源:
OpenFileDialog openFileDialog = new OpenFileDialog();
MemoryStream audioSource = new MemoryStream();
if (openFileDialog.ShowDialog() == true)
{
using (FileStream fileStream = openFileDialog.File.OpenRead())
{
audioSource.SetLength(fileStream.Length);
fileStream.Read(audioSource.GetBuffer(), 0, (int)fileStream.Length);
}
}
WaveMSS.WaveMediaStreamSource audioStreamSource =
new WaveMSS.WaveMediaStreamSource(audioSource);
mediaElement1.SetSource(audioStreamSource);
当第一次播放结束时(我知道这是因为我参加了\u mediaeend
活动),我不能再播放这段视频了
我试图设置MediaElement的位置,但未能再次播放:
mediaElement1.Position = TimeSpan.FromSeconds(0);
mediaElement1.Play();
我调试了它,Position属性设置为零,但当我尝试再次单击play(播放)时,Position属性移到末尾,并且再次弹出\u MediaEnded
事件
我能做什么?在MediaEnded事件中,将“sender”强制转换为MediaElement并调用Stop()。这将重置对象,以便您可以再次播放。多亏了Gilles Khouzam,问题才得以解决 好的,我发现了问题。SeekAsync的实现 流中的已更改,但块中的剩余计数已更改 不在WaveMediaStreamSource.cs中,查找SeekAsync方法和 将代码更改为(添加MoveToChunkOffest行):
这不起作用,因为问题不在于SL MediaElement,而在于使用WaveMediaStreamSource解析的wave文件。
this.currentPosition = this.wavParser.WaveFormatEx.BufferSizeFromAudioDuration( seekToTime ) + this.startPosition;
this.wavParser.MoveToChunkOffset( ( uint ) this.wavParser.WaveFormatEx.BufferSizeFromAudioDuration( seekToTime ) );
this.currentTimeStamp = seekToTime;
ReportSeekCompleted( seekToTime );