某天在刻晴群里发某个甘晴impact的片子,群友反映这玩意没法在线看(它只能加载出音频轨,其实就是因为编码问题),所以他们下下来分割了下,又重新上传到了一个叫做streamable的平台上面🤔
但令我产生额外兴趣的是,streamable链接在discord生成的预览框里,居然可以播放完整视频🤔我记得这是一种叫做opengraph的技术,但当时我随便研究了一下就放弃了,今天我可以接着迫真研究🤔
curl一下streamable的链接,然后grep 'meta property'
,就能看到它的og标签🤔
接下来将里面的视频url换成我的url,再想办法在wp里生成这些og标签就vans了🤔但我找了114514个wp插件,都没找到可以很方便生成这种标签的插件,所以最后我只能手动撸一个静态html文件出来了(悲🤔
上传html后,在discord里粘贴链接,果然出现了视频播放框,但它就是不播放视频(恼🤔抓包发现当按下播放键时,它并非从源加载视频,而是通过discord的某个申必proxy来加载视频,而这个proxy返回了一个500错误🤔
扔进curl里看它到底报了什么错,发现它居然嫌我给的视频链接带跳转,而且我只跳转了一次它就嫌跳转太たま多了,wiebitte?🤔毕竟oneindex的工作原理就是访问它的迫真文件直链时302跳转到真正的sharepoint下载链接,现在好了,我得在og标签的视频url里提供真正的sharepoint下载链接了🤔
用curl -I
来获取sharepoint下载链接给它粘贴进去,这次它终于可以在discord窗口里播放视频了,然而接下来当我尝试将yyut fischl塞进去时,它又一次寄(全恼🤔这次,它返回的是502错误,而且没有给出任何详情🤔
我无端猜测它可能是嫌视频太大,不给proxy(恼🤔既然如此,通过迫真研究opengraph而实现discord窗口内在线观看视频的实验基本上也没啥搞头了,搞别的玩意去(🤔
thonkeqing
可能还有一个搞法,opengraph不是有一个标签叫做视频类型吗,如果我填hls的话,会发生什么?🤔discord会支持hls在线观看吗?🤔如果支持的话,那么基于discord tube(可能还有guilded tube)的discord内在线视频观看也许还可以搞一搞(迫真🤔
那么下一步是什么?当然就是使用我熟悉(迫真)的cgi-bin技术,来撸一个动态的网址,给这个网址输入任何m3u8,它都能生成一个带og标签的html,这样把这一坨链接粘贴进discord里,它就能生成一个播放框了(确信🤔
另外youtube是怎么实现粘贴进discord后生成一个视频框的?我曾经迫真研究过,它好像用的是什么oembed,貌似可以调用一个iframe,然后在iframe里加载js播放器🤔但我用oembed那套撸了一顿,它并没有出现什么iframe,这可能说明discord只给白名单里的网站开了iframe权限(全恼🤔
wiebitte?
在我又一顿迫真实验后,我发现了一个极其生草的结论:discord能够加载youtube embed的关键在于twitter:card
和twitter:player
标签,而不是什么oembed(确信🤔我每次将那两个标签从我的html里移除,它就加载不出embed🤔但当我尝试将https://www.youtube.com/embed/
这种链接替换成我自己的embed时,它也没法加载,这可能说明这玩意是有白名单的,也有可能说明我直接将youtube embed保存成html其实是没法运行的(因为我自己尝试访问那个html,它的确出现了加载不出js和css的问题),但也有可能说明meta标签里光有上面那两个twitter打头的还不够(可能性极低🤔
我现在需要继续对那个html进行删除标签操作,看最少它需要哪些标签就能刷出embed🤔
bruhfei
最后测试下来,它这个twitter:player
标签是有白名单的,没法加载我自己的embed html(全恼🤔但非常神奇的是,它居然能加载一个视频文件,当然这个视频文件和og:video
标签加载的视频文件一样需要经过discord的申必proxy,所以这玩意也没法用来加载yyut fischl(悲🤔
另外og:video
系列的m3u8链接,discord也没法加载(全恼🤔到此,我觉得discord内视频播放就真的到头了:bruhfei:
去研究点别的玩意,比如guilded tube🤔