[英]Audio playing errors in silverlight
Errors are 1)The current chunk is too big 2)Invalid file format 错误是1)当前块太大2)无效的文件格式
3) 3220 3220 An error has occurred** 3)3220 3220发生错误**
Code is this : 代码是这样的:
private void TestPlaybutton_Click_1(object sender, RoutedEventArgs e)
{
Stream stream11 = new MemoryStream();
try
{
WavManager.SavePcmToWav(_stream2, stream11, _sink.CurrentFormat);
WaveMediaStreamSource wavMss = new WaveMediaStreamSource(stream11);
SoundClip.SetSource(wavMss);
SoundClip.Play();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
and SavePcmToWav function: 和SavePcmToWav函数:
public static Stream SavePcmToWav(Stream rawData, Stream output, AudioFormat audioFormat)
{
if (audioFormat.WaveFormat != WaveFormatType.Pcm)
throw new ArgumentException("Only PCM coding is supported.");
BinaryWriter bwOutput = new BinaryWriter(output);
bwOutput.Write("RIFF".ToCharArray());
bwOutput.Write((uint)(rawData.Length + 36));
bwOutput.Write("WAVE".ToCharArray());
// -- FORMAT chunk
bwOutput.Write("fmt ".ToCharArray());
// Length Of FORMAT Chunk (Binary, always 0x10)
bwOutput.Write((uint)0x10);
// Always 0x01
bwOutput.Write((ushort)0x01);
// Channel Numbers (Always 0x01=Mono, 0x02=Stereo)
bwOutput.Write((ushort)audioFormat.Channels);
// Sample Rate (Binary, in Hz)
bwOutput.Write((uint)audioFormat.SamplesPerSecond);
// Bytes Per Second
bwOutput.Write((uint)(audioFormat.BitsPerSample * audioFormat.SamplesPerSecond * audioFormat.Channels / 8));
// Bytes Per Sample: 1=8 bit Mono, 2=8 bit Stereo or 16 bit Mono, 4=16 bit Stereo
bwOutput.Write((ushort)(audioFormat.BitsPerSample * audioFormat.Channels / 8));
// Bits Per Sample
bwOutput.Write((ushort)audioFormat.BitsPerSample);
bwOutput.Write("data".ToCharArray());
bwOutput.Write((uint)rawData.Length);
long originalRawDataStreamPosition = rawData.Position;
rawData.Seek(0, SeekOrigin.Begin);
byte[] buffer = new byte[rawData.Length];
int read;
while ((read = rawData.Read(buffer, 0, 4096)) > 0)
{
bwOutput.Write(buffer, 0, read);
}
rawData.Seek(originalRawDataStreamPosition, SeekOrigin.Begin);
return output;
}
????? ?????? where is the problem and is there any alternative to play stream with in silverlight i am using these classes, WaveMediaStreamSource, wavparser, waveformatex
问题在哪里,是否有其他选择可以在Silverlight中播放流,我正在使用以下类,WaveMediaStreamSource,wavparser,waveformatex
I have solved my Problem. 我已经解决了我的问题。
<MediaElement x:Name="SoundClip" AutoPlay="True" MediaOpened="SoundClip_MediaOpened_1" Volume="1" />
I just change AutoPlay from False to True and it worked for me. 我只是将AutoPlay从False更改为True,它对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.