检查从 torrent 下载的视频文件是不是可以播放
Posted
技术标签:
【中文标题】检查从 torrent 下载的视频文件是不是可以播放【英文标题】:Check if video file is ready for playing while being downloaded from torrent检查从 torrent 下载的视频文件是否可以播放 【发布时间】:2015-02-17 17:57:10 【问题描述】:我是 python 的新手。 我编写了一个程序,它使用 libtorrent 通过 torrent 下载视频文件。我已将其设置为顺序下载,因此所有部分都以正确的顺序下载,以便在下载视频时观看该视频。 我得到的问题是该文件在下载开始后无法立即播放。有时应该下载 10mb,有时 30mb 才能开始视频查看。 我的想法是,这是因为缺少一些元数据。 我的问题是关于检查文件是否可以播放的方法。关于实现这一目标的任何建议?我已经搜索了很多,但还没有找到任何东西。 我正在使用 python 2.7(2.7 因为它与 libtorrent 兼容)、libtorrent、kivy 框架 1.8 和内置视频播放器,据我所知,它使用 gstreamer。 源码可以在github查看:https://github.com/dpitkevics/stream-ies?files=1 重要文件是 main.py、lib/downloader.py 提前谢谢你们:)
【问题讨论】:
在 while 循环中尝试/排除? 例如,在 mkv 上,一些元数据存储在文件末尾,因此您不能只使用顺序下载。顺序下载的另一个问题是速度慢的对等点可能会在您下载的数据中造成漏洞。你也应该以某种方式处理这种情况。 【参考方案1】:我建议使用元数据提取工具,例如Hachoir。如果该工具能够成功读取元数据,则该文件很可能是好的。但是-您不一定要在那时开始播放。你也需要缓冲。元数据将为您提供内容长度;借助 torrent 的文件大小和下载速度,您可以计算出需要多少缓冲区才能确保无缝播放。如果您正确缓冲,并且容器中的流是交错的,这应该可以确保您始终拥有开始播放所需的数据。
【讨论】:
很好的建议,我会尝试并接受答案,如果它对我来说成功:) 谢谢!我试过了,它就像一个魅力 - 只要视频不可播放,就没有元数据。现在,我需要计算缓冲区,仅此而已。谢谢:)以上是关于检查从 torrent 下载的视频文件是不是可以播放的主要内容,如果未能解决你的问题,请参考以下文章
使用 python-libtorrent 从 torrent 文件中获取 torrent 下载目录