如何在Linux上使用LibvlcSharp?

时间:2019-03-20 02:03:13

标签: linux libvlc libvlcsharp

我正在尝试在Linux安装(Ubuntu 18.04)上使用LibvlcSharp。我正在遵循所有说明,包括此Getting started on LibVLCSharp.Gtk for 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版本)上      在/media/RadioRecorderLibVlcSharp/Program.cs:line 19中的RadioRecorderLibVlcSharp.Program.Main(String [] args)中

有人可以帮助我吗?

谢谢

2 个答案:

答案 0 :(得分:0)

您可以尝试apt-get install vlc吗?这似乎有助于在系统上获取所有必需的插件/ deps(尽管它可能会从官方ubuntu代表处提取vlc 2.x)。

答案 1 :(得分:0)

它在mtz回答后运行apt-get install vlc命令!

但这仅在我评论以下行时有效:

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

如果未注释此行,则会发生以下错误:

  

未处理的异常:System.DllNotFoundException:无法加载共享库'msvcrt'或其依赖项之一。为了帮助诊断加载问题,请考虑设置LD_DEBUG环境变量:libmsvcrt:无法打开共享对象文件:没有这样的文件或目录      在LibVLCSharp.Shared.Helpers.MarshalUtils.Native._vscprintf(字符串格式,IntPtr ptr)      在LibVLCSharp.Shared.LibVLC.OnLogInternal(IntPtr数据,LogLevel级别,IntPtr ctx,字符串格式,IntPtr args)      在LibVLCSharp.Shared.LibVLC.Native.LibVLCLogSet(IntPtr libVLC,LogCallback cb,IntPtr数据)处      在LibVLCSharp.Shared.LibVLC.add_Log(EventHandler`1 value)      在/home/RadioRecorderLibVlcSharp/Program.cs:line 24中的RadioRecorderLibVlcSharp.Program.Main(String [] args)中

我已经为该dll进行了搜索,但是我找不到。有人可以帮助我吗?

谢谢