事件起因
最近没网,前两天去朋友那缓存了几部电影,1080p高清视频下载速度刷刷的。拿回来播放的时候就在想,我把视频缓存到电脑了,那我能找到吗?视频是以mp4文件缓存的吗?我能不能拿到腾讯VIP会员的缓存视频?能不能保存高清mp4?
事件经过
拿着这些疑问,我就扒拉我电脑(macOS 腾讯视频mac版1.8.2)里面的缓存文件,发现视频缓存在这个目录
/Users/用户/Library/Containers/com.tencent.tenvideo/Data/Library/Application Support/Download
打开里面的video文件夹一看,我滴个神。
ad g00208rhr0m.320092.hls l0019sl1ggv.321003.hls
c00226jie90.321003.hls j0022vz0heu.321003.hls
看文件夹结尾的名字hls (o)/~ ,再打开翻到最里面,发现里面的文件是.ts 而且可以正常播放,注意可以正常播放的哦,,(我还以为腾讯会自定义视频头信息,自定义播放器。看到这就放心了)直接使用ffmpeg合并为一个视频就行。
再然后搬出Python大宝剑,开始劈柴。
import os,sys
import logging
from ffmpy import FFmpeg
from natsort import natsorted
logger = logging.getLogger(__name__)
def hls_dir_to_mp4(in_path_dir, out_path_file):
"""
将hls文件夹里面分片的视频转化为单个MP4文件
ffmpeg -i "concat:file001.ts|file002.ts|file003.ts|file004.ts......n.ts" -acodec copy -vcodec copy -absf aac_adtstoasc out.mp4
:param in_path:
:param out_path:
:return:
"""
# 获取"concat:file001.ts|file002.ts|file003.ts|file004.ts......n.ts"列表参数
out_files = []
for dir in natsorted([val for val in os.listdir(in_path_dir) if val.startswith(in_path_dir.split("/")[-1])]):
dirPath = os.path.join(in_path_dir, dir)
print(dirPath)
for root, dirs, files in os.walk(dirPath):
files = natsorted(files)
for file in files:
if os.path.splitext(file)[1] == '.ts':
# 拼接成完整路径
filePath = os.path.join(root, file)
out_files.append(filePath)
cmd = '|'.join(out_files)
print(out_files)
cmd = 'concat:' + "\"" + cmd + "\""
cmd = 'ffmpeg -i ' + cmd + ' -acodec copy -vcodec copy -absf aac_adtstoasc ' + out_path_file
print(execCmd(cmd))
def videoCurv():
"""
转换视频格式
:return:
"""
# 转换input.mp4 为 output.avi
FFmpeg(inputs={in_path: None}, outputs={out_path: None}).run()
def execCmd(cmd):
"""
执行计算命令时间
"""
r = os.popen(cmd)
text = r.read().strip()
r.close()
return text
if __name__ == '__main__':
print(sys.argv)
if len(sys.argv) == 3:
hls_dir_to_mp4(sys.argv[1], sys.argv[2])
elif len(sys.argv) > 1:
hls_dir_to_mp4(sys.argv[1], 'tmp.mp4')
else:
print('请输入视频所在目录path')
# hls_dir_to_mp4(
# in_path_dir='/Users/bunny/Library/Containers/com.tencent.tenvideo/Data/Library/Application Support/Download/video/g00208rhr0m.320092.hls',
# out_path_file='1.mp4');
打完收工
代码已上传GitHub
使用方法
1.安装ffmpeg
brew install ffmpeg
2.安装Python3
3.安装pipenv
pip install pipenv
4.创建虚拟环境并安装依赖包
pipenv shell
5.进入虚拟环境并执行脚本
pipenv shell
python tencent_video.py /Users/用户/Library/Containers/com.tencent.tenvideo/Data/Library/Application Support/Download/video/g00208rhr0m.320092.hls out.mp4
完结