Переход с LibVLCSharp?
Я давно подумывал о использовании другой аудио библиотеки или даже о создании своей.
Чем же мне не нравится LibVLCSharp?
Дело всё в визуализации звуковых волн в моём плеере, а точнее почему их нет. Всё из-за сложности и, пожалуй, из-за того что оригинальная библиотека LibVLC написана на C/C++. Дело в том, что для визуализации звуковых волн очевидно, нужны аудио данные. LibVLCSharp предоставляет немного ограниченные возможности для получения аудио данных. Ведь можно только перехватить аудио данные, а при перехвате LibVLC не будет воспроизводить музыку самостоятельно. А реализовать воспроизведение вручную это сложно, придётся писать много платформо-зависимого кода и проще тогда уж создать свою аудио библиотеку. Есть альтернативный вариант, это аудио фильтры. Но для их управления нужно писать код на C/C++, что во-первых мне не хочется делать, а во-вторых мне эти данные нужно рендерить через фреймворк Avalonia, а в свою очередь Avalonia поддерживает только C#. Из-за чего получается что реализовать визуализацию аудио волн, что есть у большинства аудио плееров и учитывая то, что мой плеер нацелен на красоту, это обязательно должно быть реализовано.
И что же делать?
Я решил спросить у нейросети DeepSeek какие библиотеки можно выбрать для этого.
Промпт
*Привет! Я делаю свой аудио плеер на фреймворке Avalonia и ЯП C#. В качестве аудио библиотеки я выбрал LibVLCSharp, но он мне не подходит из-за не возможночти реализовать визуализацию звуковых волн. Подскажи мне несколько кросс-платформенных (Windows, Linux, Android) аудио библиотек, которые позволяют программировать на C# и предоставляют аудио волны для их визуализации в Avalonia.*Вот её ответ:
- NAudio
- CSCore
- Bass
- OpenTK (OpenAL)
- SoundTouch
- FFmpeg.AutoGen
Полный ответ
Привет! Для создания аудиоплеера с визуализацией звуковых волн на C# и Avalonia, можно рассмотреть следующие кросс-платформенные библиотеки: ### 1. **NAudio** - **Описание**: NAudio — это популярная библиотека для работы со звуком на C#. Она поддерживает множество аудиоформатов и предоставляет доступ к аудиоданным, что позволяет реализовать визуализацию звуковых волн. - **Плюсы**: - Хорошая документация и активное сообщество. - Поддержка Windows, Linux (через .NET Core/.NET 5+) и Android (с некоторыми ограничениями). - Возможность работы с сырыми аудиоданными для визуализации. - **Минусы**: - На Android может потребоваться дополнительная настройка. - **Ссылка**: [NAudio GitHub](https://github.com/naudio/NAudio) ### 2. **CSCore** - **Описание**: CSCore — это библиотека для работы со звуком, которая предоставляет доступ к аудиоданным и поддерживает визуализацию. Она работает на Windows, Linux (через .NET Core) и Android. - **Плюсы**: - Поддержка множества аудиоформатов. - Возможность работы с аудиоданными для визуализации. - **Минусы**: - Меньше документации по сравнению с NAudio. - **Ссылка**: [CSCore GitHub](https://github.com/filoe/cscore) ### 3. **Bass** - **Описание**: Bass — это мощная библиотека для работы со звуком, которая поддерживает множество платформ, включая Windows, Linux и Android. Она предоставляет API для работы с аудиоданными, что позволяет реализовать визуализацию. - **Плюсы**: - Высокая производительность. - Поддержка множества форматов и эффектов. - **Минусы**: - Требуется покупка лицензии для коммерческого использования. - **Ссылка**: [Bass Audio Library](https://www.un4seen.com/) ### 4. **OpenTK (с использованием OpenAL)** - **Описание**: OpenTK — это библиотека для работы с графикой и звуком, которая использует OpenAL для аудио. Она поддерживает кросс-платформенную разработку и предоставляет доступ к аудиоданным. - **Плюсы**: - Полный контроль над аудиоданными. - Поддержка Windows, Linux и Android. - **Минусы**: - Более сложная в использовании по сравнению с другими библиотеками. - **Ссылка**: [OpenTK GitHub](https://github.com/opentk/opentk) ### 5. **SoundTouch** - **Описание**: SoundTouch — это библиотека для обработки звука, которая поддерживает изменение темпа и тональности. Она может быть использована для получения аудиоданных для визуализации. - **Плюсы**: - Поддержка кросс-платформенной разработки. - Возможность работы с аудиоданными. - **Минусы**: - Ограниченная функциональность для визуализации. - **Ссылка**: [SoundTouch GitHub](https://github.com/surge-synthesizer/soundtouch) ### 6. **FFmpeg.AutoGen** - **Описание**: FFmpeg.AutoGen — это обертка для FFmpeg, которая позволяет работать с аудио и видео данными. Она поддерживает множество форматов и предоставляет доступ к аудиоданным для визуализации. - **Плюсы**: - Мощная и гибкая библиотека. - Поддержка множества форматов. - **Минусы**: - Более сложная в использовании. - **Ссылка**: [FFmpeg.AutoGen GitHub](https://github.com/Ruslan-B/FFmpeg.AutoGen) ### Рекомендации: - Если вам нужна простота и хорошая документация, начните с **NAudio**. - Если требуется высокая производительность и поддержка множества форматов, рассмотрите **Bass**. - Если вы готовы к более сложной настройке, но хотите полный контроль над аудиоданными, попробуйте **OpenTK** или **FFmpeg.AutoGen**. Удачи с вашим аудиоплеером! Если будут вопросы, обращайтесь. 😊
NAudio и CSCore мы сразу отбросим потому, что они платформо-зависимые и официально поддерживают только Windows. По словам нейросети они могут быть кросс-платформенные, но при определённых условиях. Мне проще будет использовать другую библиотеку, чем заморачиваться с NAudio и CSCore.
На выбор у нас остаются следующие библиотеки:
- Bass
- OpenTK (OpenAL)
- SoundTouch
- FFmpeg.AutoGen
Те что я выделил курсивом я уже пробовал с ними работать, но возникали проблемы. Я не помню какие проблемы были у OpenAL, но хорошо помню какие проблемы были у Bass.
На сколько я понял Bass не поддерживал на Windows x86. Сейчас у меня стоит Linux, возможно проблема уйдёт, но у меня же плеер кросс-платформенный, а на Windows, возможно и не будет работать. В общем над этим нужно будет подумать.
SoundTouch мы тоже уберём потому, что по словам нейросети, могут возникнуть трудности с визуализации. FFmpeg.AutoGen тоже можно отбросить из-за опять же, по словам нейросети эта аудио библиотека сложна в использовании.
Итого у нас остаются:
- Bass
- OpenAL
Я попробую обе эти библиотеки начиная с OpenAL. Далее после того как я окончательно определюсь с библиотекой и переделаю плеер для работы с ней, я напишу пост (новость) о этом.