Tag: m3u8

PPTV XBMC视频插件更新-v1.1.2

本文同步自(最佳显示效果请点击):https://zohead.com/archives/pptv-xbmc-plugin-v1-1-2/ 之前利用闲余时间写了个 PPTV 的 XBMC 多媒体中心系统的视频插件 v1.0 版本(请参考 [这里]),在 htpc XBMC 论坛上公布之外,经过几百个论坛网友下载使用之后,也发现一些问题,经过修正和增强之后更新了 1.1.2 版本的新 PPTV 视频插件。 更新内容如下: 由于 Python 2.5 以下版本不支持三目运算符,为兼容 Xbox XBMC 等老的 Python 环境,将 if else 三目运算符改换为普通的方式; 解决 PPTV 直播电视节目单获取错误的问题; 如果某个 PPTV 直播节目没有节目单,不能直接得到播放页面地址,则尝试通过搜索的方式得到播放页面地址; 引入 XBMC Chinese Keyboard 插件,为本插件增加根据关键字搜索 PPTV 视频的功能; 如果搜索到的视频不是由 PPTV 提供(例如:优酷、土豆之类),则在播放时给出提示; 播放 PPTV VIP 视频时提示用户无法播放 VIP 视频; 解决某些连续剧集节目(例如某些动漫剧场版全集)无法得到视频列表的问题。 针对某些网友提出的选择播放到开始缓冲间有点延时的问题,由于需要从 PPTV 未公开的 API 中获取真实视频地址,暂时没有什么好的办法解决。另外 PPTV 直播视频仍然使用的是 m3u8 格式的 HTTP live stream,需要 XBMC 系统能正常播放这种流媒体视频。 最后放出 1.1.2 版本 PPTV XBMC 视频插件下载地址: http://github.com/downloads/zohead/pptv4xbmc/plugin.video.pptv-v1.1.2.zip 使用此插件过程中有任何问题欢迎指正哦 ^_^

发布PPTV XBMC视频插件v1.0

本文同步自(最佳显示效果请点击):https://zohead.com/archives/pptv-xbmc-plugin/ 最近认识一位朋友想要在 XBMC 多媒体中心软件(http://www.xbmc.org/)上观看 PPTV(http://www.pptv.com/) 视频网站上的视频,看到有 Windows 上的 XBMC PPTV 插件,但都没法在我的 Raspberry Pi 微型电脑板上(板子虽小也支持播放 1080p 高清视频哦)运行,于是想着自己写个能够跨平台的 PPTV 视频的 XBMC 插件,顺便也拿这个练练 Python,HOHO。 既然要跨平台,那首先考虑必须全部用 XBMC 自带的 Python 脚本实现,不能调用 Windows 上 DLL 之类的鬼玩意,而且 Raspberry Pi 的 armhf 系统上也几乎不可能有 PPTV 的动态库可以用的。 基本原理: 通过 Python 插件发送 HTTP 请求时伪装成 iPad 客户端从 PPTV 网站上获取频道列表、视频列表、查询视频,并得到视频的实际 m3u 和 m3u8 地址。后来发现此方法得到的 m3u 和 m3u8 视频地址在 Raspberry Pi 系统中播放有问题,而且不太好直接解决。没办法,咱拿起 Wireshark 抓包神器,终于发现了 PPTV 未公开的 API 方法(其实 PPTV 一直从未公开,哈哈)得到网页 Flash 方式播放的视频地址。不过其中有个视频 key 的问题,没什么太好办法在 Python 中直接得到。最终想到通过 [硕鼠] 网站解决,硕鼠网站得到的 PPTV 视频地址明显有问题,但有个可用之处就是他能通过 Flash 得到 PPTV 的视频 key,那就省点事从硕鼠得到视频 key,从 PPTV 未公开 API 构造视频链接和分段信息(用过 Python 自带的 json 库),最终得到真实的视频地址。 有关 XBMC 的插件编写详细请参考这些链接: http://wiki.xbmc.org/index.php?title=HOW-TO:Write_plugins_for_XBMC http://wiki.xbmc.org/index.php?title=Python_development http://wiki.xbmc.org/index.php?title=Add-on_development 其中遇到的一个问题就是 HTML 的解析问题,刚开始使用的是比较成熟好用的一个 Python 插件:Beautiful Soup。这个插件的最大优势就是对不标准的 HTML 的容错性做的非常好,而且各种查找 HTML DOM 结构的函数也很强大。那就按照 Beautiful Soup 的要求解析 PPTV 的 HTML DOM,结果顺利取得,不久就发现一个问题,在 Raspberry Pi 这种比较弱的嵌入式板子上,下载 HTML 倒挺快,通过 Beautiful Soup 解析查找 HTML DOM 竟然要用去 15 秒左右的时间,这完全无法忍受,可以寻找替代品。 最终在 XBMC 的论坛里发现了比较好的 HTML parser 替代品:Parsedom XBMC Add-on。这是直接包含在 XBMC 库中的一个简单的 HTML DOM 解析扩展,import 之,下载 HTML 然后按照 class、按照 id 解析 HTML 的速度都在 1-2 秒之间,非常满意。后来使用中又发现 Parsedom 中存在的一些问题,查找原因并修正之后无伤大雅,想到干脆去掉 Parsedom 中一些我用不到的代码,直接集成到我的 py 文件中使用 ^_^。 略加奋战,终于在 XBMC 界面上能正常显示了,能显示频道列表了,也能进入频道显示视频列表,结果播放时发现悲剧了,iPad 的 m3u 被 XBMC 自己给分段解析然后尝试播放了,造成文件路径不对无法播放。后来使用手工修改路径的方式,尽管能播放,但造成的“效果”就是每 5-6 秒钟就需要切换一下视频,这对于 Raspberry Pi 这种暂时无法调用外部播放器的系统来说简直没法用。 PPTV 视频 XBMC 插件 1.0 版本功能: 支持 www.pptv.com 上基本所有直播和点播视频; 支持在插件设置中选择视频质量(与实际 PPTV 视频片源对应),暂时支持:标清、高清、超清、蓝光、iPad 超清; 支持按影片类型、时间、更新时间、热度等条件选择过滤视频,并且所有过滤条件全部实时从 PPTV 网站获取,插件中不保存分类; 视频列表支持翻页处理(具体每个连续剧的集数列表没有翻页,默认全部列出来,主要感觉 1-40 集这种列表还弄分页没什么必要); 不依赖任何 PPTV 的 Windows 程序和库,理论上可以在任何 XBMC 系统上使用 由于 XBMC 不能原生支持中文输入等原因,暂时未支持视频搜索功能,后续将会改进。 备注: 本插件默认的视频质量为高清格式,需要超清或蓝光格式的在插件设置界面中进行修改即可。iPad 超清视频和直播视频分别是特殊的 m3u 和 m3u8 格式(指向 mp4 视频),需要XBMC 系统能正常播放 PPTV m3u 和 m3u8 视频(Windows 下的 XBMC 系统应该可以配置使用外部播放器来支持,不过偶懒得安装木有测试过)。 声明: 此插件只是从 PPTV 网站获取视频内容,所有视频版权均与此网站有关,本插件一概不负责。另外由于 PPTV 网站将来会有变化,我不保证能马上修复并解决可能出现的问题,因为说不定 PPTV 就完全把未公开的 API 给禁用了。 插件介绍的截图: 插件设置界面: 视频列表界面: 具体视频播放界面(放的正是 《麦兜》 哈 ^_^): 本 XBMC 插件的 github 源代码库地址: https://github.com/zohead/pptv4xbmc 下载 PPTV 视频 XBMC 插件: http://github.com/downloads/zohead/pptv4xbmc/plugin.video.pptv-v1.0.zip 下载之后拷贝到 XBMC 系统,然后到 XBMC 系统设置中选择压缩包安装即可。我正在申请将此款插件加入 XBMC 的中文插件库,顺利的话安装此插件将会更加简单,并且在以后修改时可以直接在线更新。 各位在使用 PPTV 视频 XBMC 插件中如果发现任何问题,欢迎提出指正哦,另外有问题时最好能描述清楚,能附上看的是哪个视频或者哪个频道下面的话更好。 ^_^