C#媒体转码器PrepareMediastreamSourceTranscodeSync问题 我想在Media Foundation中使用MediaFoundation从MP3格式到WAV(PCM)格式执行媒体转码操作 < < /P>

C#媒体转码器PrepareMediastreamSourceTranscodeSync问题 我想在Media Foundation中使用MediaFoundation从MP3格式到WAV(PCM)格式执行媒体转码操作 < < /P>,c#,ms-media-foundation,transcode,C#,Ms Media Foundation,Transcode,我尝试了下面提到的代码: //Initialize MediaStreamSource with location of MP3 file var mediaStream = new MediaStreamSource(mp3File); //Create a "dummy" wav file to attach to IRandomAccessStream StorageFile _OutputFile2 = await KnownFolders.VideosLibrary.Create

我尝试了下面提到的代码:

//Initialize MediaStreamSource with location of MP3 file
var mediaStream = new MediaStreamSource(mp3File);

//Create a "dummy" wav file to attach to IRandomAccessStream
StorageFile _OutputFile2 = await  
KnownFolders.VideosLibrary.CreateFileAsync("Test.wav", 
CreationCollisionOption.GenerateUniqueName);

IRandomAccessStream iras = 
_OutputFile2.OpenAsync(FileAccessMode.ReadWrite).AsTask().Result;

//Setup the transcode operation to convert from MP3 to WAV
_Profile = MediaEncodingProfile.CreateWav(audioEncodingProfile);
var preparedTranscodeResult = await 
_Transcoder.PrepareMediaStreamSourceTranscodeAsync(mediaStream, iras, 
_Profile);

try
{
    if (preparedTranscodeResult.CanTranscode)
    {
        var progress = new Progress<double>(TranscodeProgress);

        await 
        preparedTranscodeResult.TranscodeAsync().AsTask(_cts.Token, 
        progress);
    }
    else
    {
        TranscodeFailure(preparedTranscodeResult.FailureReason);
    }
}
catch (Exception ex)
{
    TranscodeError(ex.Message);
}
//使用MP3文件的位置初始化MediaStreamSource
var mediaStream=新的MediaStreamSource(mp3File);
//创建一个“虚拟”wav文件以附加到irandomaccesstream
StorageFile\u OutputFile2=等待
KnownFolders.VideosLibrary.CreateFileAsync(“Test.wav”,
CreationCollisionOption.GenerateUniqueName);
IRANDOMACcesstream iras=
_OutputFile2.OpenAsync(FileAccessMode.ReadWrite).AsTask().Result;
//设置转码操作以将MP3转换为WAV
_Profile=MediaEncodingProfile.CreateWav(音频编码配置文件);
var preparedTranscodeResult=等待
_Transcoder.PrepareMediastreamSourceTranscodeSync(mediaStream、iras、,
_个人资料);
尝试
{
if(准备好的Transcode结果。CanTranscode)
{
var进度=新进度(代码转换进度);
等待
preparedTranscodeResult.TranscodeAscync().AsTask(_cts.Token,
进展);
}
其他的
{
转码失败(准备好的Transcode结果、失败原因);
}
}
捕获(例外情况除外)
{
转码错误(例如消息);
}
尝试转码时,出现以下错误:

需要先初始化此对象,然后才能执行请求的操作 执行

我还提到了有类似问题的链接:

我正在寻找一个执行内存转码操作而不是将其保存到磁盘的示例


感谢你的帮助。

媒体基金会是一个完美的解决方案。我打算提供一个详细的答案(可能需要保留一些时间)。您打算如何处理PCM流?IEEE浮点还是16位无符号?您解决了这个问题吗?如果是,你能给出答案吗?