在Windows应用商店应用中将音频流捕获为AMR-NB?

时间:2013-12-02 04:31:07

标签: audio-streaming winrt-async

我尝试使用以下代码将音频流捕获为AMR-NB:

var capture = new MediaCapture();
await capture.InitializeAsync();
var recordProfile = new MediaEncodingProfile();
Windows.Media.MediaProperties.AudioEncodingProperties audioProp= new AudioEncodingProperties();
audioProp.ChannelCount = 1;
audioProp.BitsPerSample = 16;
audioProp.SampleRate = 8000;
audioProp.Bitrate = 16;                  
audioProp.Subtype = MediaEncodingSubtypes.AmrNb;                 
recordProfile.Audio = audioProp;
Windows.Media.MediaProperties.ContainerEncodingProperties containProp = new ContainerEncodingProperties();
containProp.Subtype = MediaEncodingSubtypes.Mpeg4;
recordProfile.Container = containProp;
recordProfile.Video = null;
var file = await KnownFolders.VideosLibrary.CreateFileAsync("captured.mp4",CreationCollisionOption.GenerateUniqueName);
await capture.StartRecordToStorageFileAsync(recordProfile, file);

但是我得到了一个例外:"没有找到编码或解码转换"。

如何在Windows应用商店应用中将音频流捕获为AMR-NB?

1 个答案:

答案 0 :(得分:0)

“编译或解码时找不到转换”错误通常意味着没有找到编解码器。您需要提供一个编解码器才能工作。 (例如,如果你尝试在通用应用程序中进行mp3编码,它将在Win8上运行,但在WinPhone上给出相同的错误,因为Msft没有在手机上提供该编解码器)

对于Windows应用商店应用,支持的音频格式可以是found here,我们在媒体捕获期间可用的编解码器似乎仅限于these。看来我们必须提供自己的编解码器。