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-pre 或 aliliving-pre,若请求太多,在 Filter 中 填入 alicdn 即可

教程4

教程5

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


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

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

Windows

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

思路也与上面的一致

播放

macOS

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

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

Windows

可以使用 VLC 等播放器播放

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

Linux

可以使用 VLC 等播放器播放

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

Android

可以使用 MX Player 或 VLC 等播放器播放

也可以使用支持 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/

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