Захватывать аудиопоток как AMR-NB в приложении Магазина Windows?

Я попытался захватить аудиопоток как 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);

Но я получил исключение: "Не найдено преобразование для кодирования или декодирования".

Как я могу захватить аудиопоток как AMR-NB в приложении Магазина Windows?

1 ответ

Решение

Ошибка "Не найдено преобразование для кодирования или декодирования" обычно означает, что кодек не найден. Вам нужно будет предоставить кодек для его работы. (например, если вы попытаетесь выполнить кодирование mp3 в универсальном приложении, оно будет работать на Win8, но с той же ошибкой на WinPhone, потому что Msft не предоставляет этот кодек на телефоне)

Для приложений Windows Store поддерживаемые аудиоформаты можно найти здесь, и кодеки, доступные для использования во время захвата мультимедиа, ограничиваются ими. Все остальное, кажется, мы должны предоставить свой собственный кодек.

Другие вопросы по тегам