本来想在自己的老旧Android平板上装个腾讯视频,然后下载很多高清视频离线看。由于平板太老,没办法装腾讯视频的手机版本和平板版本。于是尝试了TV版本和极速版。后来发现TV版本没办法呼出输入法,因此只能使用极速版。初期还是比较好用的,毕竟简化版占用的内存不多,在老年安卓平板上运行还是相当流畅的。然而由于缓存的视频多了以后,发现平板的存储空间不够用了(标配16G)。最后决定把平板连接到电脑上把视频拷贝出来。于是就有了本篇文章。
拷贝平板电脑视频
首先,自己Mac上安装了Android File Transfer,连接平板以后能够看到平板的文件夹,但是看不到平板中腾讯视频的缓存文件夹。网上各种搜索以后有一种解释比较靠谱。就是说安卓APP创建文件夹以后没有做Scan操作,所以文件夹没有被索引,因此Media Storage程序看不到该文件夹。具体可以看这个外国小哥的贴。看来直接通过android的MTP拷贝文件出来是行不通了。
SSH远程连接安卓平板
为了能够让老年安卓平板体现价值,现在放弃肯定是不行的。毕竟已经下载了那么多高清视频了,无奈另辟蹊径。最后决定在平板上安装一个命令行终端,启动一个SSHD服务,然后通过SSH把文件拷贝出来。于是又在网上一顿搜索,找到了非常有名的Termux。毕竟不是安卓届混的,所以其实之前都没有听说过。这个终端可以通过f-droid平台下载。可以在平板上直接下载apk并安装,或者在电脑上下载好以后,通过MTP拷贝到平板上再安装。apk文件很小,安装也非常方便。
安装Termux
本篇文章其实还是介绍M3U8视频的,因此开头的故事情节还是描述太多。这里就说在安卓平板上启动SSHD可能会遇到的几个坑。首先安装好Termux以后要安装OpenSSH,然后启动SSHD服务。
apt install openssh sshd
在尝试连接安卓的SSHD服务之前,需要通过ifconfig
命令知道平板的IP地址,并使用whoami
命令知道当前的用户名。另外需要知道SSHD开的端口是什么(千万不要假设默认的22端口,比如我平板上默认开的是8022端口),可以使用netstat命令查询。
ifconfig whoami netstat -tunpl | grep sshd
知道以上信息以后便可以从自己电脑上通过SSH远程登录自己的安卓平板了(注意平板和电脑必须在同一局域网)。
ssh -p 8022 u0_a84@192.168.1.124
腾讯视频极速版离线文件
腾讯视频极速版的离线文件在此路径下:
/sdcard/Android/data/com.tencent.videolite.android/files/videos
每一个离线视频有个hls
或者shd
结尾的文件夹。hls文件夹中保存的为HTTP Live Streaming文件。shd中保存的是mp4文件。根据不同的视频长度,文件夹中包含若干个文件。例如一个12分钟长度的720P高清视频大概有75个TS文件,或者2个MP4文件。
合并导出腾讯视频离线TS视频文件
我下载的可能都是免费的视频,因此我看到的离线视频都没有加密,因此可以直接把75个TS文件直接合并为一个完整的TS文件后导出。首先我们看以下离线视频的文件夹结构:
如前所述,每一个以hls结尾或者shd结尾的文件夹都是一个离线视频。下面我们分别看看HLS和SHD文件夹是什么结构。
在HLS文件夹中,又有3个子文件夹。个人猜测,文件夹的个数取决于不同的电影。本例中有3个子文件夹,并且每个文件夹中有30个ts文件。因此我们需要将所有的ts文件都合并起来,才能得到最终的电影视频文件。为了方便操作,我们专门写了一个简单的小工具combine-ts.py,使用以下命令可以非常方便的导出最终的完整版TS文件。
python combine-ts.py ~/qqvideolite/r075832cr9b.322003.hls /sdcard/DCIM/26.ts
有兴趣的朋友可以在github中找到该工具。
合并导出腾讯视频离线MP4文件
相对于TS文件,MP4文件要方便很多。主要是文件数量少并且没有那么复杂的文件夹结构。如图所示:
因此要合并和导出mp4文件,比较方便的做法是先把mp4文件拷贝出来以后使用ffmpeg合并即可。网上搜索了几种使用ffmpeg合并视频的方案。
#1.直接合并
ffmpeg -i concat:"c0778cvwf6b.10701.1.mp4|c0778cvwf6b.10701.2.mp4" -c copy 21.mp4
不知道什么原因,以上方案并不成功。得到的结果只有第一个视频,虽然这两个文件的格式和编码都是完全一样的。有一个外国小哥也有这个问题(中文版),最终我们使用第二套方案实现了文件合并。
#2.使用ffmpeg demux
这种方法是首先创建一个文件列表list.txt,内容如下:
file 'c0778cvwf6b.10701.1.mp4' file 'c0778cvwf6b.10701.2.mp4'
随后运行以下命令合并文件:
ffmpeg -f concat -i list.txt -c copy merged.mp4
ffmpeg其他使用技巧
ffmpeg是一个非常强大的工具,有多强大这里不做说明了。以下是一些使用ffmpeg的小技巧,以备不时之需。
使用ffmpeg视频分段
例如我们有个视频,要截取从1小时28分47秒以后,长度为1小时2分15秒的视频,并保存为output.mp4。可以使用以下命令行:
ffmpeg -ss 02:58:47 -i source.mp4 -c copy -t 01:02:15 output.mp4
使用ffmpeg将DVD视频保存为MP4
我们同样可以使用ffmpeg把vob格式的DVD视频转换为mp4文件。有兴趣的朋友可以试试以下命令:
ffmpeg -i input.vob -c:v copy -c:a copy output.mpg
以上命令是保留了原始视频编码和音频编码的方式转换。如果要压缩保存,可以使用以下命令(可以参考外国小哥的这个方案):
ffmpeg -i input.vob -c:v libx264 -c:a aac -strict experimental output.mp4
扫码联系船长