Lufs's Blog

Life feeds on negative entropy.

我「爱」学习 —— 下载钉钉直播 or 录播回放

Lufs's Avatar 2020-04-20 分享

万恶的钉钉,无法下载回放,自带的播放器锚点定位垃圾、无法旋转录播,最重要的是,还尼玛那么耗电

即便这样,也不能阻挡我要更好的学习体验的步伐!

目录

缘起
分析&思路
教程
尾巴

不想看原因、分析的话,直接跳到教程就行了 🤔

缘起

我亲爱的老师,上传了一个讲解录播,类似于这样的

缘起1

网页打开后是这样的

缘起2

竖着的!还一个多小时。。。你让我电脑情何以堪 🤣

突然想起老师有提醒让我们用手机竖着看,于是拿出了手机

缘起3

???确定不是在逗我玩???
(注:这是钉钉经常出现的问题)

嗯。。。太难用了,干它就完事儿了!

分析与思路

分析

这个录播是网页?那就 fn + F12 走起 😋

直接定位元素
分析1

发现直接有带个链接,初步锁定这为视频文件,但链接在新标签中提示 Not Found 后就跳转 钉钉首页 了(

分析2

查看网络页,发现加载完毕后依旧不断有视频数据载入,即可判定播放文件为 m3u8 格式

分析3

那么就简单了,刷新后即可获取文件 😋

分析4

双击文件下载下来,拖进 IINA 里发现无法播放 🤔

分析5

那么推测与 m3u8 文件链接后面的参数有关,完整复制 URL,粘贴进去成功播放 😆

分析6

至此,已经解决正常播放的问题了,IINA 设置旋转 90 度即可舒适的观看 😋

新的想法

由此扩展下,那不就通过抓包来获取直播的视频文件,即可在第三方播放器上观看录播&直播,体验肯定比 钉钉 自带的那个垃圾播放器好呢

看了一下,直播和直播回放也是这样的说,好耶

教程

注意:本文皆以 Android 系统macOS 系统进行教程演示,其它系统的部分步骤可能与本教程不同,请谅解

录播链接类

如果是上面的那种链接类录播的话,那就很简单,打开链接用电脑浏览器进入调试选项的网络页面,过滤关键字 m3u8 后复制链接地址获取播放 URL 即可
(可以使用 Google Chrome、Microsoft 新版 Edge、Safari、Mozilla FireFox 等浏览器)

图片教程
教程1

教程2


若需要在线播放的话,请点击此处跳转

若需要下载的话,请点击此处跳转

直播 or 直播回放

Android

直播

使用 无 root 抓包无需安装证书(Android 端 http 请求中就包含了直播 or 直播回放 URL)

钉钉进入直播(聊天)页面,切换到抓包,点击右上角的开始抓包,切换回钉钉,点击播放按钮,待加载完毕后返回抓包,停止。

接下来查看抓包结果
教程1

教程2

注意:直播视频后缀为 flv回放则为 m3u8

根据上面来筛选获取 直播 URL,注意,直播 URL 时长与直播进度有关,下载时也不会显示进度条


直播回放
需要软件与上面一致但钉钉页面变更为直播回放页面,除文件后缀为 m3u8 外,其它步骤大致与上面相同

教程1

教程2


若需要在线播放的话,请点击此处跳转

若需要下载的话,请点击此处跳转

macOS

使用 Charles 官网

下载并安装。由于抓的是 HTTPS,需要安装证书,在软件菜单 Help - SSL Proxying - Install Charles Root Certificate
教程1

稍后便会打开钥匙串,若无法添加可尝试将证书拖动到「登陆」页

教程2

然后在软件菜单中的 Proxy - SSL Proxying Settings - SSL Proxying 中,勾选 Enable SSL Proxying,并在 Include 中 Add 一个 Host 为 *(这个是通配符)Prot 为 443(SSL 所使用的端口)

最后使 Proxy 选卡项中的 macOS Proxy 勾选即可。

教程3

接下来打开钉钉,打开你要下载的直播回放 or 正在进行的直播,待加载完毕后返回 Charles,找到有带 alicdn.com 的请求,一般请求的二级域名为 dtliving-prealiliving-pre,若请求太多,在 Filter 中 填入 alicdn 即可

教程4

教程5

最后双击 URLValue 栏,那便是我们要的东西了,接下来粘贴至 IINA 播放或使用 ffmepg 下载即可。


若需要在线播放的话,请点击此处跳转

若需要下载的话,请点击此处跳转

Windows

Windows?我手上木有 Windows 的电脑做演示,不过大致操作与 macOS 的相同,可以使用 CharlesFiddler 进行抓包。

思路也与上面的一致

播放

macOS

可以使用 IINA(推荐)或 VLC 等播放器播放

也可以使用支持 m3u8 格式的浏览器播放

Windows

可以使用 VLC 等播放器播放

也可以使用支持 m3u8 格式的浏览器播放

Linux

可以使用 VLC 等播放器播放

也可以使用支持 m3u8 格式的浏览器播放

Android

可以使用 MX PlayerVLC 等播放器播放

也可以使用支持 m3u8 格式的浏览器播放

iOS

可以使用 VLC 等播放器播放

也可以使用支持 m3u8 格式的浏览器播放

下载

macOS 等桌面平台

那么想要下载下来看怎么办呢?这时候就可以祭出万能的 Ffmpeg 了(安卓(Android) 平台请点击此处跳转

macOS 下安装的话,终端输入:brew install ffmpeg (前提是你安装了 Homebrew

其它系统的话,看 ffmpeg 官网介绍

安装完成后,使用

ffmpeg -i https://dtliving-pre.alicdn.com/live/ -c copy 1.mp4

其中

https://dtliving-pre.alicdn.com/live/ 是上文完整复制的 URL
1.mp4 是要存储的文件名

等待一会儿,即可下载为普通的视频文件(速度由网速决定和视频文件大小决定

分析7

Android(安卓)

网上可以搜索到各类 m3u8 下载器~~(关键词 m3u8)~~
个人极其不推荐百毒到个各种东西,可以使用 IDM+ 下载,将链接粘贴进去即可

扩展

手动输入命令下载太难受了,尤其是想批量下载回放的时候。。。

突然想起来我之前有写一个批量测速脚本,拿来稍微改改就可以用了 😋

(需要手动抓到地址,然后将其写入文件,一行一个地址

下面贴代码

#!/bin/sh
file=${0%/*}/1.txt # 这里是上面提到的文件路径
const=$(awk '{print NR}' $file | tail -n1) # 获取这个文件总共有多少行

for n in `seq ${const}` # 从一循环到行数,并赋值到 n
do
ffmpeg -i `sed -n "${n}p" "$file"` -c copy ${0%/*}/${n}.mp4 # 获取对应行并将其合并为一个视频 # 20.04.23 更新,将视频文件存储到脚本所在的目录
done

回车!舒服!不愧是阿里云提供的支持,速度几乎全程跑满 😆

尾巴

吐槽

钉钉那家伙,估计是调用 网页 的,以至于在 macOS 还偶尔回弹出保存为 xxx.html 的提示框 💦

手机上嘛,看会儿直播就烫的要死,哎。。。调用软解无误了,这也就算了,还常常出现些莫名其妙的 feature

钉钉团队也是真的厉害,做到了全平台统一、一致的烂体验

碎碎念

这篇教程嘛,看钉钉那家伙自带的播放器不爽写得~

本文作者 : Lufs
本文采用 CC BY-NC-SA 4.0 许可协议。转载和引用时请注意遵守协议!
本文链接 : https://blog.isteed.cc/post/fuck-dingtalk-live/

本文最后更新于 天前,文中所描述的信息可能已发生改变