Skip to content

WPF приложение для одновременной записи системного звука и звука с микрофона в один файл (WAV или MP3).

License

Notifications You must be signed in to change notification settings

bivex/System-Audio-Recorder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

System Audio Recorder

WPF приложение для одновременной записи системного звука и звука с микрофона в один файл (WAV или MP3).

Архитектура

Проект построен на принципах Clean Architecture, DDD и SOLID:

src/
├── SystemRecord.Domain/           # Доменный слой - сущности, value objects, интерфейсы
│   ├── Entities/                 # Сущности (RecordingSession)
│   ├── ValueObjects/             # Value objects (AudioFormat, RecordingConfiguration)
│   └── Interfaces/               # Порты (IAudioCapture, IAudioWriter, IAudioMixer)
│
├── SystemRecord.Application/      # Прикладной слой - use cases
│   ├── UseCases/                 # Use cases (StartRecording, StopRecording)
│   └── Services/                 # Интерфейсы сервисов
│
├── SystemRecord.Infrastructure/   # Инфраструктурный слой - адаптеры
│   ├── Audio/                    # Реализация работы с аудио через NAudio
│   └── Services/                 # Реализация сервисов
│
└── SystemRecord.Presentation/     # Слой представления - WPF UI

Возможности

  • Запись системного звука (через WASAPI Loopback)
  • Запись звука с микрофона
  • Микширование обоих источников в реальном времени
  • Поддержка форматов:
    • WAV (без сжатия, высокое качество)
    • MP3 (сжатие для экономии места)
  • Автоматическое сохранение:
    • Записи сохраняются в папку Desktop\recordings
    • Имена файлов генерируются автоматически по дате и времени
  • Профессиональная синхронизация:
    • Устранены щелчки и рассинхронизация
    • Плавная запись даже при разной частоте дискретизации устройств

Требования

  • .NET 9.0 или выше
  • Windows (для WASAPI)

Запуск

cd src/SystemRecord.Presentation
dotnet run

Использование

  1. Запустите приложение.
  2. Выберите источники звука (System Audio / Microphone).
  3. (Опционально) Отметьте "Save as MP3", если хотите получить MP3 файл.
  4. Нажмите "Start Recording".
  5. Нажмите "Stop Recording" для завершения.

Запись будет автоматически сохранена в папку recordings на рабочем столе.

Технологии

  • NAudio - работа с аудио устройствами
    • WASAPI Loopback - захват системного звука
    • WaveInEvent - захват звука с микрофона
    • MediaFoundationEncoder - кодирование в MP3
  • WPF - пользовательский интерфейс
  • Microsoft.Extensions.DependencyInjection - внедрение зависимостей

Как работает запись

Приложение использует продвинутую систему синхронизации:

  1. Захват: Аудио захватывается асинхронно в буферы (BufferedWaveProvider).
  2. Синхронизация: Специальный алгоритм ("Data Driven Clock") следит за наполнением буферов и читает данные только тогда, когда они реально доступны (порог 100мс). Это предотвращает "гонку" и вставку тишины.
  3. Микширование: Потоки ресемплируются и микшируются в единый поток.
  4. MP3 Кодирование:
    • При выборе MP3 запись сначала идет во временный WAV файл (для надежности и исключения артефактов).
    • После остановки записи файл мгновенно конвертируется в MP3.

Принципы проектирования

  • Hexagonal Architecture (Ports & Adapters) - изоляция бизнес-логики от инфраструктуры
  • SOLID принципы - каждый класс имеет одну ответственность
  • DDD - доменная модель с явными сущностями и value objects
  • Dependency Injection - все зависимости внедряются через конструкторы

About

WPF приложение для одновременной записи системного звука и звука с микрофона в один файл (WAV или MP3).

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages