Как использовать LibvlcSharp в Linux? - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь использовать LibvlcSharp на установке Linux (Ubuntu 18.04). Я следую всем инструкциям, включая эту Начало работы с LibVLCSharp.Gtk для Linux , но мое приложение всегда падает. Он отлично работает на Windows, потому что там мы можем добавить пакет VideoLAN.LibVLC.Windows, но я не смог найти что-то похожее для Linux.

Мой код:

static void Main(string[] args)
    {
        // Record in a file "record.ts" located in the bin folder next to the app
        var currentDirectory = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
        var destination = Path.Combine(currentDirectory, "record.ts");

        // Load native libvlc library
        Core.Initialize();

        using (var libvlc = new LibVLC())
        //var libvlc = "/usr/lib/x86_64-linux-gnu/";
        using (var mediaPlayer = new MediaPlayer(libvlc))
        {
            // Redirect log output to the console
            libvlc.Log += (sender, e) => Console.WriteLine($"[{e.Level}] {e.Module}:{e.Message}");

            // Create new media with HLS link
            var urlRadio = "http://transamerica.crossradio.com.br:9126/live.mp3";
            var media = new Media(libvlc, urlRadio, FromType.FromLocation);

            // Define stream output options. 
            // In this case stream to a file with the given path and play locally the stream while streaming it.
            media.AddOption(":sout=#file{dst=" + destination + "}");
            media.AddOption(":sout-keep");

            // Start recording
            mediaPlayer.Play(media);

            Console.WriteLine($"Recording in {destination}");
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }

Сообщение об ошибке:

Необработанное исключение: LibVLCSharp.Shared.VLCException: не удалось выполнить создание экземпляра на собственной стороне. Убедитесь, что вы установили правильный пакет VideoLAN.LibVLC. [YourPlatform] в свой проект для конкретной платформы. в LibVLCSharp.Shared.Internal..ctor (выпуск Func 1 create, Action 1) в RadioRecorderLibVlcSharp.Program.Main (String [] args) в /media/RadioRecorderLibVlcSharp/Program.cs:line 19

Кто-нибудь может мне помочь?

спасибо

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Сработало после ответа mtz, выполнив команду apt-get install vlc!

Но это сработало только когда я прокомментировал строку:

libvlc.Log += (sender, e) => Console.WriteLine($"[{e.Level}] {e.Module}:{e.Message}");

Если эта строка не закомментирована, возникает следующая ошибка:

Необработанное исключение: Система.DllNotFoundException: Невозможно загрузить общую библиотеку 'msvcrt' или одну из ее зависимостей.Чтобы помочь диагностировать проблемы загрузки, рассмотрите возможность установки переменной среды LD_DEBUG: libmsvcrt: невозможно открыть файл общего объекта: нет такого файла или каталога в LibVLCSharp.Shared.Helpers.MarshalUtils.Native._vscprintf (String format, IntPtr ptr) в LibVLCSharp.Shared.LibVLC.OnLogInternal (данные IntPtr, уровень LogLevel, IntPtr ctx, формат String, аргументы IntPtr) в LibVLCSharp.Shared.LibVLC.Native.LibVLCLogSet (IntPtr libVLC, данные LogCallback cb, IntLLVDLVSHLB).Значение EventHandler`1) в RadioRecorderLibVlcSharp.Program.Main (String [] args) в /home/RadioRecorderLibVlcSharp/Program.cs:line 24

Я подписался на эту dll, но не могунаходить.Кто-нибудь может мне помочь?

спасибо

0 голосов
/ 20 марта 2019

Можете ли вы попробовать apt-get install vlc? Это, кажется, помогает получить все необходимые плагины / deps в вашей системе (хотя это, вероятно, будет извлекать vlc 2.x из официального представителя Ubuntu).

...