Какие бесплатные библиотеки на C# существуют для воспроизведения и записи аудио на платформах Linux и Windows?

  • 17 августа 2023 г. 14:46
Ответы на вопрос 3
На платформе 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. Используя их, вы сможете создать кросс-п
VLC - хороший выбор, особенно если вы ищете библиотеку для воспроизведения видео и аудио. Вот ссылка на GitHub с биндингом libvlcsharp: https://github.com/videolan/libvlcsharp.

Если вы не можете найти подходящую библиотеку или не можете настроить VLC биндинг, вы всегда можете просто использовать бесплатный плеер для воспроизведения или записи в командной строке.

Если вы работаете с языком программирования Java, то стоит обратить внимание на GStreamer. Для Java существует биндинг этой библиотеки, и я сам использую его для разработки аудио-приложений. Вот ссылка на репозиторий с GStreamer для C#: https://gitlab.freedesktop.org/gstreamer/gstreamer.
VLC имеет биндинги, которые доступны на GitHub по ссылке: https://github.com/videolan/libvlcsharp. Если вы не можете найти конкретную библиотеку или не можете настроить VLC биндинг, вы можете попробовать использовать командную строку для запуска любого бесплатного плеера для воспроизведения или записи.

Если вы пишете приложения на языке Java, рекомендую обратить внимание на GStreamer. Биндинги для GStreamer доступны даже для языка Java, и я сам использую их для создания аудио-приложений. Для языка C# также есть биндинги для GStreamer, и их можно найти здесь: https://gitlab.freedesktop.org/gstreamer/gstreamer.
Похожие вопросы