Я разрабатываю приложение .net Maui с .NET 8 SDK, и я испытываю периодические проблемы, записывая звук на iOS. Я управляю записи из класса C# с помощью нативного API Avaudiorecorder через привязки или собственные вызовы. Иногда он записывает без проблем, а в других случаях он просто не начинает записывать или не сбоимого молча. Предлагается более стабильная реализация, но проблема сохраняется, поэтому она кажется не связанной с моей прямой реализацией. Есть рекомендации или решения?
спасибо < /p>
public class AudioRecorderService : IAudioRecorderService
{
AVAudioRecorder recorder;
string audioFilePath;
public bool IsRecording => recorder?.Recording ?? false;
bool IAudioRecorderService.IsRecording { get => IsRecording; set => throw new NotImplementedException(); }
public void StartRecording()
{
try
{
ResetAudioSession();
var session = AVAudioSession.SharedInstance();
session.SetCategory(AVAudioSessionCategory.Record, AVAudioSessionCategoryOptions.DefaultToSpeaker);
session.SetActive(true);
var audioSettings = new AudioSettings
{
SampleRate = 44100.0,
Format = AudioFormatType.LinearPCM,
NumberChannels = 1,
AudioQuality = AVAudioQuality.High,
LinearPcmBitDepth = 16,
LinearPcmFloat = false,
LinearPcmBigEndian = false,
LinearPcmNonInterleaved = false
};
var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
audioFilePath = Path.Combine(documents, "audio_record.wav");
// Elimina el archivo anterior si existe (por corrupción u otro error)
if (System.IO.File.Exists(audioFilePath))
System.IO.File.Delete(audioFilePath);
var url = NSUrl.FromFilename(audioFilePath);
recorder = AVAudioRecorder.Create(url, audioSettings, out NSError error);
if (error != null)
{
Console.WriteLine($"Error initializing recorder: {error.LocalizedDescription}");
return;
}
recorder.PrepareToRecord();
recorder.Record();
}
catch (Exception ex)
{
Console.WriteLine($"Exception in StartRecording: {ex.Message}");
}
}
private void ResetAudioSession()
{
try
{
var session = AVAudioSession.SharedInstance();
// Try to deactivate any existing session
session.SetActive(false);
session = AVAudioSession.SharedInstance(); // Re-obtain instance just in case
recorder?.Stop();
recorder?.Dispose();
recorder = null;
}
catch (Exception ex)
{
Console.WriteLine($"Error resetting audio session: {ex.Message}");
}
}
public void StopRecording()
{
recorder?.Stop();
recorder?.Dispose();
recorder = null;
}
public string GetAudioFilePath()
{
return audioFilePath;
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... n-net-maui
Аудиозапись периодически терпит неудачу на iOS с использованием Avaudiorecorder в .net maui (.net 8) ⇐ IOS
Программируем под IOS
1747380706
Anonymous
Я разрабатываю приложение .net Maui с .NET 8 SDK, и я испытываю периодические проблемы, записывая звук на iOS. Я управляю записи из класса C# с помощью нативного API Avaudiorecorder через привязки или собственные вызовы. Иногда он записывает без проблем, а в других случаях он просто не начинает записывать или не сбоимого молча. Предлагается более стабильная реализация, но проблема сохраняется, поэтому она кажется не связанной с моей прямой реализацией. Есть рекомендации или решения?
спасибо < /p>
public class AudioRecorderService : IAudioRecorderService
{
AVAudioRecorder recorder;
string audioFilePath;
public bool IsRecording => recorder?.Recording ?? false;
bool IAudioRecorderService.IsRecording { get => IsRecording; set => throw new NotImplementedException(); }
public void StartRecording()
{
try
{
ResetAudioSession();
var session = AVAudioSession.SharedInstance();
session.SetCategory(AVAudioSessionCategory.Record, AVAudioSessionCategoryOptions.DefaultToSpeaker);
session.SetActive(true);
var audioSettings = new AudioSettings
{
SampleRate = 44100.0,
Format = AudioFormatType.LinearPCM,
NumberChannels = 1,
AudioQuality = AVAudioQuality.High,
LinearPcmBitDepth = 16,
LinearPcmFloat = false,
LinearPcmBigEndian = false,
LinearPcmNonInterleaved = false
};
var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
audioFilePath = Path.Combine(documents, "audio_record.wav");
// Elimina el archivo anterior si existe (por corrupción u otro error)
if (System.IO.File.Exists(audioFilePath))
System.IO.File.Delete(audioFilePath);
var url = NSUrl.FromFilename(audioFilePath);
recorder = AVAudioRecorder.Create(url, audioSettings, out NSError error);
if (error != null)
{
Console.WriteLine($"Error initializing recorder: {error.LocalizedDescription}");
return;
}
recorder.PrepareToRecord();
recorder.Record();
}
catch (Exception ex)
{
Console.WriteLine($"Exception in StartRecording: {ex.Message}");
}
}
private void ResetAudioSession()
{
try
{
var session = AVAudioSession.SharedInstance();
// Try to deactivate any existing session
session.SetActive(false);
session = AVAudioSession.SharedInstance(); // Re-obtain instance just in case
recorder?.Stop();
recorder?.Dispose();
recorder = null;
}
catch (Exception ex)
{
Console.WriteLine($"Error resetting audio session: {ex.Message}");
}
}
public void StopRecording()
{
recorder?.Stop();
recorder?.Dispose();
recorder = null;
}
public string GetAudioFilePath()
{
return audioFilePath;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79622974/audio-recording-intermittently-fails-on-ios-using-avaudiorecorder-in-net-maui[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия