【问题标题】:C# LibVLCSharp player direct feed mediaC# LibVLCSharp 播放器直接馈送媒体
【发布时间】:2020-04-09 11:51:21
【问题描述】:

有一个通过 NuGet 包使用 LibVLC 的 C# 应用程序。

这些是包:

使用这些软件包,很容易将一些媒体播放器放入您的 WinForms 应用程序中。

你所要做的就是初始化一个播放器并给它一个新的Media

LibVLCSharp.Shared.LibVLC libVLC = new LibVLC();

LibVLCSharp.WinForms.VideoView videoView;
videoView.MediaPlayer = new LibVLCSharp.Shared.MediaPlayer(libVLC)

videoView.MediaPlayer.Play(new Media(libVLC, "URL", FromType.FromLocation));

现在我想将缓冲区中的自定义数据提供给媒体播放器。 它可以是字节数组或任何类似的东西。 (数据应被视为逐块来自有效的 mp4 文件)。

如何在 C# 中使用 libVLC 实现这一目标?

【问题讨论】:

    标签: c# vlc libvlc libvlcsharp


    【解决方案1】:

    使用这个媒体构造函数

    new Media(libVLC, new StreamMediaInput(stream));
    

    stream 可以通过任何 .NET 流。

    此示例带有洪流,例如:https://github.com/mfkl/lvst/blob/master/LVST/Program.cs

    【讨论】:

    • 有什么区别 b/w StreamMediaInput 和 _mediaInput ?
    • StreamMediaInput 是 LVS 提供的一个具体类。 MediaInput 是一个抽象类,你可以实现它来定义你自己的流机制
    【解决方案2】:

    如果您不想在不需要的地方创建 Stream,您也可以实现自己的 MediaInput 类,并实现所需的方法

    https://code.videolan.org/videolan/LibVLCSharp/-/blob/master/src/LibVLCSharp/MediaInput.cs

    然后,用法与@mfkl 指出的相同。不过要小心,MediaInput 必须被释放!

    this._mediaInput = new MyMediaInput();
    
    mediaPlayer.Play(new Media(libVLC, this._mediaInput));
    
    // At the end
    this._mediaInput.Dispose();
    

    【讨论】:

    • 哇,这可能很新,我什至不得不更新 nuget 包才能使 MediaInput 类可用。谢谢
    • 是的,它是新的,我添加了这个,因为我想添加更多的场景,而不仅仅是一个普通的 Stream。享受! ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 2020-06-05
    相关资源
    最近更新 更多