019. Avalonia UI - Capturing Microphone Audio

00:00 Введение и цель • Необходимо найти способ записывать и передавать аудио в потоковом режиме с Mac, Windows и Linux. • Если не удастся найти готовое решение, придётся создать код самостоятельно. • Цель — найти код, который позволит передавать аудио с любого подключённого микрофона. 00:31 Начало исследования • Проект использует Avalonia и .NET Core для получения звука. • Начинаем поиск решений через Google, ищем статьи и пакеты NuGet. • Планируем экспериментировать с различными пакетами. 01:45 Обзор OpenTK .NET • OpenTK использует классы захвата звука для сбора данных с микрофона на разных платформах. • Поддерживает Windows, Linux и Mac. • Имеет высокую стабильность и поддержку. 02:42 Анализ других вариантов • Рассматриваем пример с процентной шкалой уровня звука. • Оцениваем документацию и активность разработки. • Сравниваем OpenTK с другими вариантами. 06:31 Проблемы с Naudio • Naudio поддерживает только Windows, что ограничивает его использование. • Для Mac потребуется другое решение. 07:52 Попытка использования SoundLib • Пытаемся использовать оболочку C# для кроссплатформенного аудио SoundLib. • Возникают проблемы с одобрением файлов на Mac. • Исследуем ошибки и пытаемся их исправить. 10:11 Отладка кода • Удаляем устройство вывода, чтобы проверить работу кода. • Обнаруживаем ошибку ввода-вывода звука. • Продолжаем отладку, проверяя использование кольцевого буфера. 11:00 Создание кольцевого буфера • Создание кольцевого буфера для хранения данных. • Длительность буфера вызова составляет 30 секунд. • Переписывание кода под конкретные нужды. 11:16 Работа с указателями и байтами • Считывание свободных байтов из указателя записи. • Использование расширенного указателя чтения для подсчёта байтов в кадре. • Начало чтения с определённого количества кадров. 12:06 Проблемы с задержкой микрофона • Упоминание проблемы с задержкой микрофона. • Серверная часть равна нулю, что указывает на отсутствие проблем. 12:46 Выбор устройства по умолчанию • Если значение device равно null, выбирается устройство по умолчанию. • Регистрация выходных данных при нулевом результате. 13:18 Проверка совместимости частоты дискретизации • Проверка совместимости частоты дискретизации устройства вывода с форматом. • Устройство ввода поддерживает формат и частоту дискретизации. 14:04 Настройка входного потока • Необходимость включения устройства вывода для выбора макета. • Использование одного и того же устройства для входа и выхода. 15:30 Расчёт частоты дискретизации и задержки • Точный расчёт частоты дискретизации, количества байт на кадр и времени задержки. • Сохранение данных в буфере без его создания. 18:43 Чтение данных из потока • Получение каналов, считывание количества байт на выборку. • Копирование данных из потока в буфер памяти. 20:11 Анализ полученных данных • Проверка формата и частоты дискретизации данных. • Анализ необработанного звука с нулями и единицами. 21:12 Исправление ошибок чтения • Удаление цикла for для буфера. • Проверка работы системы после исправления. 22:12 Вывод данных на консоль • Вывод данных на консоль для анализа. • Суммирование байтов и вывод их на экран. 23:28 Анализ значений данных • Анализ значений данных, полученных из аудиозаписи. • Понимание, что данные не обязательно связаны с объёмом. 23:54 Запись звука в код • Запись звука легко включается в код. • Для записи звука требуется небольшой фрагмент кода и обратный вызов. • Можно передавать данные в потоковом режиме вместо записи четырёх байтов. 24:46 Тестирование и интеграция • Автор предлагает протестировать запись звука на разных микрофонах. • Планируется интеграция записи в чтение аудиоданных и их визуальную обработку. • Если тест пройдёт успешно, интеграция будет продолжена.

Иконка канала Ленинский Букварь
240 подписчиков
12+
5 просмотров
7 дней назад
12+
5 просмотров
7 дней назад

00:00 Введение и цель • Необходимо найти способ записывать и передавать аудио в потоковом режиме с Mac, Windows и Linux. • Если не удастся найти готовое решение, придётся создать код самостоятельно. • Цель — найти код, который позволит передавать аудио с любого подключённого микрофона. 00:31 Начало исследования • Проект использует Avalonia и .NET Core для получения звука. • Начинаем поиск решений через Google, ищем статьи и пакеты NuGet. • Планируем экспериментировать с различными пакетами. 01:45 Обзор OpenTK .NET • OpenTK использует классы захвата звука для сбора данных с микрофона на разных платформах. • Поддерживает Windows, Linux и Mac. • Имеет высокую стабильность и поддержку. 02:42 Анализ других вариантов • Рассматриваем пример с процентной шкалой уровня звука. • Оцениваем документацию и активность разработки. • Сравниваем OpenTK с другими вариантами. 06:31 Проблемы с Naudio • Naudio поддерживает только Windows, что ограничивает его использование. • Для Mac потребуется другое решение. 07:52 Попытка использования SoundLib • Пытаемся использовать оболочку C# для кроссплатформенного аудио SoundLib. • Возникают проблемы с одобрением файлов на Mac. • Исследуем ошибки и пытаемся их исправить. 10:11 Отладка кода • Удаляем устройство вывода, чтобы проверить работу кода. • Обнаруживаем ошибку ввода-вывода звука. • Продолжаем отладку, проверяя использование кольцевого буфера. 11:00 Создание кольцевого буфера • Создание кольцевого буфера для хранения данных. • Длительность буфера вызова составляет 30 секунд. • Переписывание кода под конкретные нужды. 11:16 Работа с указателями и байтами • Считывание свободных байтов из указателя записи. • Использование расширенного указателя чтения для подсчёта байтов в кадре. • Начало чтения с определённого количества кадров. 12:06 Проблемы с задержкой микрофона • Упоминание проблемы с задержкой микрофона. • Серверная часть равна нулю, что указывает на отсутствие проблем. 12:46 Выбор устройства по умолчанию • Если значение device равно null, выбирается устройство по умолчанию. • Регистрация выходных данных при нулевом результате. 13:18 Проверка совместимости частоты дискретизации • Проверка совместимости частоты дискретизации устройства вывода с форматом. • Устройство ввода поддерживает формат и частоту дискретизации. 14:04 Настройка входного потока • Необходимость включения устройства вывода для выбора макета. • Использование одного и того же устройства для входа и выхода. 15:30 Расчёт частоты дискретизации и задержки • Точный расчёт частоты дискретизации, количества байт на кадр и времени задержки. • Сохранение данных в буфере без его создания. 18:43 Чтение данных из потока • Получение каналов, считывание количества байт на выборку. • Копирование данных из потока в буфер памяти. 20:11 Анализ полученных данных • Проверка формата и частоты дискретизации данных. • Анализ необработанного звука с нулями и единицами. 21:12 Исправление ошибок чтения • Удаление цикла for для буфера. • Проверка работы системы после исправления. 22:12 Вывод данных на консоль • Вывод данных на консоль для анализа. • Суммирование байтов и вывод их на экран. 23:28 Анализ значений данных • Анализ значений данных, полученных из аудиозаписи. • Понимание, что данные не обязательно связаны с объёмом. 23:54 Запись звука в код • Запись звука легко включается в код. • Для записи звука требуется небольшой фрагмент кода и обратный вызов. • Можно передавать данные в потоковом режиме вместо записи четырёх байтов. 24:46 Тестирование и интеграция • Автор предлагает протестировать запись звука на разных микрофонах. • Планируется интеграция записи в чтение аудиоданных и их визуальную обработку. • Если тест пройдёт успешно, интеграция будет продолжена.

, чтобы оставлять комментарии