На платформе Linux вы можете воспользоваться следующими библиотеками для воспроизведения и записи аудио:
1. PortAudio: это кросс-платформенная библиотека для работы с аудио. Она поддерживает Windows, Linux, macOS и другие платформы. Вы можете использовать оболочку для C# под названием PortAudioSharp.
Пример кода для воспроизведения файла .WAV с использованием PortAudioSharp:
```csharp
using PortAudioSharp;
using System;
class Program
{
static void Main(string[] args)
{
var stream = new BlockingStream(PortAudio.Pa_GetDefaultOutputDevice(), 1, PortAudio.PaSampleFormat.paFloat32, 44100, 512);
stream.Start();
// Загрузка и воспроизведение файла .WAV
var audioFile = new WaveFile("file.wav", false);
var buffer = new float[512];
int bytesRead;
while ((bytesRead = audioFile.Read(buffer, 0, buffer.Length)) > 0)
{
stream.Write(buffer, 0, bytesRead);
}
// Остановка воспроизведения
stream.Stop();
Console.WriteLine("Воспроизведение завершено. Нажмите Enter для выхода...");
Console.ReadLine();
}
}
```
2. PulseAudio: это звуковая система для Linux, поддерживающая воспроизведение и запись аудио. В C# вы можете использовать библиотеку NAudio.Pulse для работы с PulseAudio.
Пример кода для воспроизведения файла .WAV с использованием NAudio.Pulse:
```csharp
using NAudio.Wave;
using NAudio.CoreAudioApi;
using NAudio.PulseAudio;
using System;
class Program
{
static void Main(string[] args)
{
using (var audioFile = new AudioFileReader("file.wav"))
using (var pulseAudio = new PulseAudioServer())
using (var stream = pulseAudio.CreatePlaybackStream(audioFile.WaveFormat.SampleRate, audioFile.WaveFormat.Channels))
{
stream.Start();
var buffer = new byte[1024];
int bytesRead;
while ((bytesRead = audioFile.Read(buffer, 0, buffer.Length)) > 0)
{
stream.Write(buffer, 0, bytesRead);
}
stream.Stop();
}
Console.WriteLine("Воспроизведение завершено. Нажмите Enter для выхода...");
Console.ReadLine();
}
}
```
3. ALSA: это звуковая система для Linux, которая предоставляет API для работы с аудио. Вы можете использовать библиотеку ALSA для C# под названием Mono.Unix.Native.
Пример кода для записи аудио с микрофона с использованием Mono.Unix.Native:
```csharp
using System;
using Mono.Unix;
using Mono.Unix.Native;
class Program
{
static void Main(string[] args)
{
using (var outputFile = new UnixFileStream("output.wav", FileAccess.Write | FileAccess.Read | FileAccess.Truncate, FilePermissions.S_IRUSR | FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH))
{
var format = new WaveFormat(44100, 16, 1);
var buffer = new byte[1024];
using (var capture = new UnixFileStream("/dev/dsp", FileAccess.Read))
using (var writer = new WaveFileWriter(outputFile, format))
{
while (true)
{
int bytesRead = capture.Read(buffer, 0, buffer.Length);
writer.Write(buffer, 0, bytesRead);
writer.Flush();
}
}
}
Console.WriteLine("Запись завершена. Нажмите Enter для выхода...");
Console.ReadLine();
}
}
```
Указанные библиотеки могут помочь вам воспроизвести файл .WAV и записать аудио с микрофона на платформах Linux и Windows. Используя их, вы сможете создать кросс-п