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位无符号?您解决了这个问题吗?如果是,你能给出答案吗?