我正在尝试将HLS播放添加到Python应用程序中。目前,最合适的路径似乎是使用LibVLC及其Python绑定,因为它是我发现的唯一可以开箱即用(甚至可以)播放MPEG传输流的Python多媒体库。不过,我对其他建议持开放态度。
但是,我还需要我的应用程序来处理从HLS清单本身获取MPEG TS块的过程,以便设置适当的用户代理,管理代理设置并在HTTP请求之间存储cookie。因此,我有一个线程下载HLS块并将它们添加到队列,然后将它们提供给BytesIO实例。我可以很容易地将该实例保存到磁盘以模拟下载功能,但我的问题是,如何将BytesIO流中的数据提供给LibVLC以便实时播放流?
我已尝试将ctypes与libvlc_media_new_callbacks一起使用(请参阅我的previous question here),但没有走得太远。我也尝试传递使用os.pipe创建的临时文件或管道的文件描述符,但VLC似乎无法继承和访问它们。如果我将每个块保存到其自己的临时文件中,然后在VLC中将它们排队,则每个块之间的回放存在间隙。所以我有点卡住了。
非常感谢任何帮助!