下载某直播的回放视频
作为一个技术人,工作中无时无刻不穿插着技术,如果技术有幸能在我们除工作之外的生活中有用武之地,我相信大部分技术人会很开心、欣慰,我正是如此。就我个人经历,早期有用过某个 Markdown 软件,发现它能集成七牛云、又拍云作图床,可唯独没有阿里云 OSS,但它开放了入口可集成自定义图床,于是我开发了个应用发布到公网,自此之后享受着粘贴图片到写作窗口它就行自行上传的快感。虽然功能简单实现成本不高,但我热爱的技术与我的日常生活产生了交集,我很开心。
今天,又发生了一件让我开心的事情。老婆公司在某直播平台做了场直播,想把直播视频下载下来进行二次剪辑,问了她公司的技术,技术人员说那视频下载不了,老婆便找我让想办法。我打开 Chrome 观察请求发现回放的视频是一段段的 TS 文件,它们的路径相同且文件名命名有规则,比如 *.ts,* 是从 0~600,做了尝试发现这之间的文件也都存在。那就好办了,把这些文件都下载下来给合并下就能得到完整的视频文件。按照这种思路得到了完整的回放视频,老婆把我夸了个够。
下面记录下操作细节,主要操作步骤如下:
- Java 代码实现下载 TS 文件到本地
- 合并 TS 文件
Java 代码实现下载 TS 文件到本地
主要用到了 commons-io 包下 IOUtils,代码如下:
1 | |
程序执行结束后,N 多个 TS 视频小文件被下载了下来,效果图:

合并 TS 文件
Widnows 系统下直接通过 copy 命令即可完成合并操作,MacOS 下可通过 cat 命令进行。以 Windows10 为例,新建文档,输入以下内容:
copy /b *.ts video.ts
然后存储为 merge.cmd,双击该批处理程序执行,待 cmd 窗口修改即完成合并,下图展示了处理过程:

这里使用 copy 命令的文件合并功能进行 ts 文件的合并,copy 后面的 /b 参数表示把文件按二进制格式来合并,如果不加这个参数,则会把目标当成文本文件来合并,并在文件内添加不必要的标记,这会导致播放出错,所以必须加 /b 参数。