@sudomarokko

Какая есть бесплатная библиотека на C# для воспроизведения и записи аудио на Linux+Windows?

Мое текущее приложение отлично работает на Windows, однако разработка идет для Linux, соответственно используемая мной библиотека NAudio там не работает. За последние несколько дней перерыл почти все либы, что были у меня на слуху как кросс-платформенные (NAudio.Core, CSCore, VLC, Bass (ошибка, связанная с Bass.dll)), но в них нельзя было даже определить Sound API для Linux (там только Wasapi, DS, Wave). Может кто-то сталкивался с этим? Мне нужно буквально воспроизвести *.WAV файл и записать аудио через микрофон, все. Желательно в ответе не просто ссылку на репу, а пример с объяснением, ибо за эти дни я устал
  • Вопрос задан
  • 848 просмотров
Решения вопроса 2
VoidVolker
@VoidVolker Куратор тега C#
Dark side eye. А у нас печеньки! А у вас?
Дык VLC же есть, прям первая ссылка в гугле на биндинг: https://github.com/videolan/libvlcsharp
Да даже если не можете найти конкретно либу или вот VLC биндинг завести, то что мешает тупо в командной строке запускать любой бесплатный плеер для воспроизведения/записи?
Ответ написан
@sudomarokko Автор вопроса
Звукозапись через libVlcSharp
LibVLCSharp.Shared.Core.Initialize();
                    _libVLC = new LibVLC();
                    mediaPlayer = new MediaPlayer(_libVLC);
                    _media = new Media(_libVLC, "dshow://", FromType.FromLocation);
                    string tempDir = Path.GetTempPath();
                    FileName = "record" + DateTime.Now.Ticks + ".mp3";
                    FilePath = Path.Combine(tempDir, FileName);
                    _media.AddOption($@":dshow-adev={SelectedSource}");
                    _media.AddOption(
                        $@":sout=#transcode{{acodec=mp3,ab=512,channels=2,samplerate=44100}}:file{{dst={FilePath}}}");
                    _media.AddOption(":sout-keep");

                    mediaPlayer.Play(_media);

Воспроизведение звука
_media = new Media(_libVLC, new Uri(FilePath));
                mediaPlayer = new MediaPlayer(_media);
                mediaPlayer.EndReached += MediaEndReached;
                mediaPlayer.Play();
                IsPlaying = true;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
leahch
@leahch Куратор тега Linux
3D специалист. Dолго, Dорого, Dерьмово.
Смотрите в сторону gstreamer. Не знаю, как для шарпов, но для явы биндиги есть, сам на нем пишу audio-приложения.
И да, для шарпов тоже есть - https://gitlab.freedesktop.org/gstreamer/gstreamer...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы