Python 使用LibVLC播放内存中的流

Python 使用LibVLC播放内存中的流,python,libvlc,Python,Libvlc,我正在尝试将HLS回放添加到Python应用程序中。目前,最合适的方法似乎是使用LibVLC及其Python绑定,因为它是我为Python找到的唯一一个可以直接播放MPEG传输流(或根本不播放)的多媒体库。不过,我愿意接受其他建议 但是,我还需要我的应用程序处理从HLS清单本身获取MPEG TS块的过程,以便设置适当的用户代理、管理代理设置和在HTTP请求之间存储cookie。因此,我有一个线程下载HLS块并将它们添加到队列中,然后将它们馈送到BytesIO实例中。我可以很容易地将该实例保存到磁

我正在尝试将HLS回放添加到Python应用程序中。目前,最合适的方法似乎是使用LibVLC及其Python绑定,因为它是我为Python找到的唯一一个可以直接播放MPEG传输流(或根本不播放)的多媒体库。不过,我愿意接受其他建议

但是,我还需要我的应用程序处理从HLS清单本身获取MPEG TS块的过程,以便设置适当的用户代理、管理代理设置和在HTTP请求之间存储cookie。因此,我有一个线程下载HLS块并将它们添加到队列中,然后将它们馈送到BytesIO实例中。我可以很容易地将该实例保存到磁盘以模拟下载功能,但我的问题是,如何将BytesIO流中的数据馈送到LibVLC中,以便实时播放该流

我尝试过使用ctypes和libvlc_media_new_回调(请参阅我的),但没有走多远。我还尝试传递使用os.pipe创建的临时文件或管道的文件描述符,但VLC似乎无法继承和访问这些文件。如果我将每个块保存到它自己的临时文件中,然后在VLC中对它们进行排队,则每个块之间的播放会有一个间隙。所以我有点困了


任何帮助都将不胜感激

你看过媒体回调吗,即libvlc_media_new_callbacks()-你的Python绑定支持吗?显然它们支持-我在前面的一个问题中链接了一些代码,我试图使用它们但没有成功。诚然,当涉及到ctypes和回调时,我有点像一条离开水的鱼。