С .NET regex (и почти только .NET) вы можете использовать:
(?:(-\S+)\s*)+
Группа 1 будет содержать список всех подстроенных подстрок.
Или, может быть, просто использовать Matches
в вашем случае достаточно:
var re = new Regex(@"-\S+");
var matches = re.Matches(str);
Вы можете использовать MTAudioProcessingTap
для этого, что является свойством AVPlayer
AVAudioMix
. В обратном вызове процесса крана используйте MTAudioProcessingTapGetSourceAudio
для захвата ваших буферов. Если у вас есть ссылка на буфер, вы можете сохранить данные.
Для правильной настройки параметров AVAudioMix
и MTAudioProcessingTap
необходим некоторый шаблон. Пример кода, который есть у Apple, довольно старый, но все же должен работать. https://developer.apple.com/library/archive/samplecode/AudioTapProcessor/Introduction/Intro.html#//apple_ref/doc/uid/DTS40012324
Также обратите внимание, что это будет Проще сделать это в Цели С, по нескольким причинам. Взаимодействие с вашим C-файлом будет легче, и это намного проще для чтения / записи в буфер в Objc. Он также будет работать быстрее, чем в Swift. Если вам интересно посмотреть, как это будет выглядеть в swift, здесь приведен пример проекта: https://github.com/gchilds/MTAudioProcessingTap-in-Swift