问题描述
我想创建一个使用 LibVLCSharp API 的小型媒体播放器。为了避免可能的卡顿,我想将视频部分加载到内存中,并将 MemoryStream 传递给 API。将流传递给 VLC API 没有问题。
由于我的视频文件大小可能超过 20 GB,我只想将它们部分加载到内存中。
例如:我有一个 1 小时的视频,大小约为 20GB。 一开始我想将前 5 分钟(~2GB)加载到内存中。 播放完视频的第一分钟后,应删除第一分钟的数据,并将第 6 分钟的数据加载到 RAM 中。
解决方法
VLC 已经做了自己的缓冲,是否有不直接传递 FileStream 的原因?
你需要搜索视频吗?如果没有,我会尝试使用 PipeReader/PipeWriter 作为 MediaInput 实现。我认为我们没有这方面的代码,但我们欢迎提供示例。
如果您需要搜索视频,请使用 FileStream,或者,如果不可能,请实现您自己的 Stream 子类来访问您的文件。 VLC 将进行缓冲。
您没有提供太多有关“口吃”的信息,因此我们对此无能为力。当您尝试读取 MemoryStream 中的数据时会发生这种情况吗?