改变视频文件二进制值而不影响播放的方法

Posted on 2022-09-02 20:18  uccoa  阅读(82)  评论(0编辑  收藏  举报

本质是视频文件二进制值后追加特殊符号(如换行符、制表符)的二进制值

import hashlib
import os

def getFilesByDir(target_path, include_str=None, filter_strs=None):
    """
    获取指定目录下所有的文件(不包含以__开头和结尾的文件)或指定格式的文件,若不同目录存在相同文件名,只返回第1个文件的路径
    :param target_path: 查找的目录路径
    :param include_str: 获取包含字符串的名称,不区分大小写
    :param filter_strs: 过滤包含字符串的名称,区分大小写
    """
    if filter_strs is None:
        filter_strs = []

    files = []
    names = os.listdir(target_path)
    for name in names:
        path = os.path.abspath(os.path.join(target_path, name))
        if os.path.isfile(path):
            # 寻找包含指定字符串的文件名
            if include_str is not None and include_str.upper() not in name.upper():
                continue

            # 寻找不包含filter_strs中的字符
            for filter_str in filter_strs:
                if filter_str in name:
                    break
            else:
                files.append(path)
        #递归获取子文件夹里的文件
        # else: files += getFilesByDir(path, include_str=include_str, filter_strs=filter_strs)
    return files

def editBineryOfFiles(files):
    for i in range(len(files)):
        with open(files[i][:files[i].rindex('\\')+1] + str(i) + '.mp4', 'wb') as f:
            with open(files[i], 'rb') as tf:
                f.write(tf.read())
                f.write(b'\n')

target_path = 'D:/'
files = getFilesByDir(target_path, '')
editBineryOfFiles(files)