2 Star 1 Fork 0

creatorliao/自动整理剪辑视频

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
tools_merge_mp4_files.py 2.37 KB
一键复制 编辑 原始数据 按行查看 历史
liaohai1 提交于 2024-07-07 17:23 . update tools
import subprocess
from datetime import datetime
from pathlib import Path
from loguru import logger
from tqdm import tqdm
def setup_logging():
log_directory = Path('logs')
log_directory.mkdir(exist_ok=True)
log_filename = datetime.now().strftime("%Y-%m-%d") + ".log"
log_path = log_directory / log_filename
logger.add(log_path, rotation="00:00", retention="7 days")
def merge_mp4_files(directory, output_file):
setup_logging()
logger.info("Starting to merge MP4 files.")
directory = Path(directory)
output_file = Path(output_file)
# 获取目录下的所有 MP4 文件,并按文件名排序
files = sorted(directory.glob('*.mp4'))
logger.info(f"files:{files}")
if not files:
logger.error("No MP4 files found in the directory.")
return
logger.info(f"Found {len(files)} MP4 files to merge.")
# 创建一个临时文件,存储文件列表
list_file_path = directory / 'filelist.txt'
with list_file_path.open('w', encoding='utf-8') as list_file:
for file in files:
list_file.write(f"file '{file.resolve()}'\n")
# 使用 tqdm 显示进度条
total_files = len(files)
with tqdm(total=total_files, desc="Merging files", unit="file") as pbar:
# 使用 ffmpeg 合并文件
command = [
'ffmpeg',
'-f', 'concat',
'-safe', '0',
'-i', str(list_file_path),
'-c', 'copy',
'-loglevel', 'error', # 调整 loglevel 减少日志输出
str(output_file)
]
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 读取 ffmpeg 的输出并更新进度条
for line in process.stdout:
if "frame=" in line:
pbar.update(1)
stdout, stderr = process.communicate()
if process.returncode != 0:
logger.error(f"ffmpeg error: {stderr}")
else:
logger.info("MP4 files merged successfully.")
logger.info(f"Output file: {output_file}")
# 删除临时文件
list_file_path.unlink()
if __name__ == "__main__":
directory = Path(r'E:\BaiduNetdiskDownload\孙子兵法与竞争智慧_ev') # 替换为实际目录路径
output_file = directory / '孙子兵法与竞争智慧_ev.mp4' # 合并后的输出文件
merge_mp4_files(directory, output_file)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/creatorliao/auto_split_videos.git
[email protected]:creatorliao/auto_split_videos.git
creatorliao
auto_split_videos
自动整理剪辑视频
master

搜索帮助