# This viminfo file was generated by Vim 9.1. # You may edit it if you're careful! # Viminfo version |1,4 # Value of 'encoding' when this file was written *encoding=utf-8 # hlsearch on (H) or off (h): ~h # Command Line History (newest to oldest): :wq |2,0,1787488015,,"wq" # Search String History (newest to oldest): # Expression History (newest to oldest): # Input Line History (newest to oldest): # Debug Line History (newest to oldest): # Registers: ""1 LINE 0 #!/usr/bin/env bash # # split_videos.sh # # 功能: # 遍历指定文件夹下的视频文件(文件名以 8 位数字 MMDDHHmm 结尾, # 例如 xxx07091111.mp4),每 110 分钟用 ffmpeg 流复制(-c copy, # 不重新编码)分割一次,并按“原时间戳 + 110*n 分钟”重新命名分片。 # # 命名规则示例: # 原文件: xxx07091111.mp4 (07-09 11:11) # 第1段: xxx07091301.mp4 (11:11 + 110min = 13:01) # 第2段: xxx07091451.mp4 (13:01 + 110min = 14:51) # # 规则细节(已与用户确认): # 1. 分割方式:ffmpeg -c copy 流复制,只能在关键帧处切割, # 时间点可能有几秒误差,不重新编码、不做任何画质/参数处理。 # 2. 分割成功后会删除原始文件。 # 3. 视频总时长本身不足 110 分钟:不分割,文件名保持不变,直接跳过。 # 4. 文件名最后 8 位数字 = MMDDHHmm(月日时分,无年份), # 前面部分(不管多长、含不含数字)都当作前缀原样保留。 # # 用法: # ./split_videos.sh /path/to/video/folder # 不传参数则默认处理当前目录 # # 依赖:ffmpeg, ffprobe # set -uo pipefail SEGMENT_MINUTES=110 SEGMENT_SECONDS=$((SEGMENT_MINUTES * 60)) DUMMY_YEAR=2000 # 仅用于日期加减运算的占位年份(闰年,避免2月29日报错),输出时会被去掉 TARGET_DIR="${1:-.}" if ! command -v ffmpeg >/dev/null 2>&1; then echo "错误: 未找到 ffmpeg,请先安装。" >&2 exit 1 fi if ! command -v ffprobe >/dev/null 2>&1; then echo "错误: 未找到 ffprobe,请先安装。" >&2 exit 1 fi if [[ ! -d "$TARGET_DIR" ]]; then echo "错误: 目录不存在: $TARGET_DIR" >&2 exit 1 fi |3,1,1,1,50,0,1787488013,"#!/usr/bin/env bash","#","# split_videos.sh","#","# 功能:","# 遍历指定文件夹下的视频文件(文件名以 8 位数字 MMDDHHmm 结尾,","# 例如 xxx07091111.mp4),每 110 分钟用 ffmpeg 流复制(-c copy,","# 不重新编码)分割一次,并按“原时间戳 + 110*n 分钟”重新命名分片。","#","# 命名规则示例:","# 原文件: xxx07091111.mp4 (07-09 11:11)",>60 |<"# 第1段: xxx07091301.mp4 (11:11 + 110min = 13:01)","# 第2段: xxx07091451.mp4 (13:01 + 110min = 14:51)","#","# 规则细节(已与用户确认):","# 1. 分割方式:ffmpeg -c copy 流复制,只能在关键帧处切割,","# 时间点可能有几秒误差,不重新编码、不做任何画质/参数处理。","# 2. 分割成功后会删除原始文件。",>103 |<"# 3. 视频总时长本身不足 110 分钟:不分割,文件名保持不变,直接跳过。","# 4. 文件名最后 8 位数字 = MMDDHHmm(月日时分,无年份),","# 前面部分(不管多长、含不含数字)都当作前缀原样保留。","#","# 用法:","# ./split_videos.sh /path/to/video/folder","# 不传参数则默认处理当前目录","#","# 依赖:ffmpeg, ffprobe","#","set -uo pipefail","","SEGMENT_MINUTES=110",>43 |<"SEGMENT_SECONDS=$((SEGMENT_MINUTES * 60))","DUMMY_YEAR=2000 # 仅用于日期加减运算的占位年份(闰年,避免2月29日报错),输出时会被去掉","","TARGET_DIR=\"${1:-.}\"","","if ! command -v ffmpeg >/dev/null 2>&1; then"," echo \"错误: 未找到 ffmpeg,请先安装。\" >&2"," exit 1","fi","if ! command -v ffprobe >/dev/null 2>&1; then"," echo \"错误: 未找到 ffprobe,请先安装。\" >&2"," exit 1","fi","",>37 |<"if [[ ! -d \"$TARGET_DIR\" ]]; then"," echo \"错误: 目录不存在: $TARGET_DIR\" >&2"," exit 1","fi","" # File marks: '0 178 26 ~/butoclip.sh |4,48,178,26,1787488015,"~/butoclip.sh" '1 95 20 ~/.bashrc |4,49,95,20,1787485902,"~/.bashrc" '2 94 22 ~/.bashrc |4,50,94,22,1787485888,"~/.bashrc" '3 94 22 ~/.bashrc |4,51,94,22,1787485888,"~/.bashrc" # Jumplist (newest first): -' 178 26 ~/butoclip.sh |4,39,178,26,1787488015,"~/butoclip.sh" -' 1 0 ~/butoclip.sh |4,39,1,0,1787488011,"~/butoclip.sh" -' 95 20 ~/.bashrc |4,39,95,20,1787485902,"~/.bashrc" -' 95 20 ~/.bashrc |4,39,95,20,1787485902,"~/.bashrc" -' 94 22 ~/.bashrc |4,39,94,22,1787485893,"~/.bashrc" -' 94 22 ~/.bashrc |4,39,94,22,1787485893,"~/.bashrc" -' 94 22 ~/.bashrc |4,39,94,22,1787485888,"~/.bashrc" -' 94 22 ~/.bashrc |4,39,94,22,1787485888,"~/.bashrc" -' 1 0 ~/.bashrc |4,39,1,0,1787485875,"~/.bashrc" -' 1 0 ~/.bashrc |4,39,1,0,1787485875,"~/.bashrc" -' 1 0 ~/.bashrc |4,39,1,0,1787485875,"~/.bashrc" -' 1 0 ~/.bashrc |4,39,1,0,1787485875,"~/.bashrc" # History of marks within files (newest to oldest): > ~/butoclip.sh * 1787488014 0 " 178 26 ^ 178 27 . 178 26 + 1 19 + 178 26 > ~/.bashrc * 1787485902 0 " 95 20 ^ 95 21 . 95 20 + 94 22 + 95 20