macOS 获取腾讯视频缓存视频文件并转为mp4

事件起因

最近没网,前两天去朋友那缓存了几部电影,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

完结

你可能感兴趣的:(macOS 获取腾讯视频缓存视频文件并转为mp4)