【发布时间】:2015-09-25 18:56:57
【问题描述】:
我正在尝试设置 WaveStream,使其使用与传入的 mp3 数据相同的格式。我通过读取帧来获取格式,但是当我尝试使用新格式实际创建新的转换流时我收到“AcmNotPossible 调用 AcmStreamOpen”异常。
这是我尝试设置新格式的地方:
Mp3Frame f = Mp3Frame.LoadFromStream(ms);
WaveFormat targetFormat = new Mp3WaveFormat(f.SampleRate, f.ChannelMode == ChannelMode.Mono ? 1 : 2, f.FrameLength, f.BitRate);
WaveFormatConversionStream conversionStream;
try
{
using (WaveStream blockAlignedStream =
new BlockAlignReductionStream(conversionStream = new WaveFormatConversionStream(targetFormat,
new Mp3FileReader(ms))))
{
using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
{
waveOut.Init(blockAlignedStream);
waveOut.Play();
如果我设置波形流以匹配 mp3 数据的格式,我什至不确定是否需要转换任何内容。
注意:我尝试使用 WaveFormatStream.CreatePcmStream,但我得到了一些 mp3 的“静态/白噪声”。它们似乎是 16 位 44,100 立体声,但被标记为版本 1,第 1 层,而不是正确播放的版本 1,第 3 层。
【问题讨论】: