用LibVLC播放inmemory流

2024-06-01 21:34:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我尝试过将ctypes与libvlc_media_new_回调一起使用(请参见我的previous question here),但效果并不理想。我还尝试传递使用创建的临时文件或管道的文件描述符os.管道,但VLC似乎无法继承和访问这些。如果我将每个块保存到它自己的临时文件中,然后在VLC中对它们进行排队,则在每个块之间的回放中会有间隙。所以我有点卡住了。在

任何帮助都将不胜感激!在


Tags: 实例方法应用程序代理管道队列多媒体hls