1. 安装 FFmpeg
首先,确保您已经安装了 FFmpeg 并将其添加到系统的环境变量中。
{/card-list-item}
{card-list-item}
2. 编写批处理文件 (split_videos.bat)
将以下代码保存为 split_videos.bat 文件:
@echo off
setlocal enabledelayedexpansion
REM 输入目录(存放要分割的视频文件)
set "input_directory=C:\path\to\your\videos"
REM 输出目录(存放分割后的视频文件)
set "output_directory=C:\path\to\output"
REM 每个分割文件的最大大小(例如:1000M 表示 1000MB)
set max_size=1000M
REM 每个时间片段的长度(以秒为单位)
set segment_time=600
REM 创建输出目录(如果不存在)
if not exist "%output_directory%" mkdir "%output_directory%"
REM 遍历输入目录中的所有视频文件
for %%f in ("%input_directory%\*.mp4" "%input_directory%\*.avi" "%input_directory%\*.mov" "%input_directory%\*.mkv") do (
REM 获取文件名和扩展名
set "filename=%%~nf"
set "extension=%%~xf"
REM 输出文件名
set "output_file=%output_directory%\!filename!_part%%03d!extension!"
REM 执行 FFmpeg 按大小分割视频,结合时间片段
ffmpeg -i "%%f" -c copy -map 0 -segment_time %segment_time% -f segment -reset_timestamps 1 -fs %max_size% "!output_file!"
)
echo 视频分割完成!
pause
{/card-list-item}
{card-list-item}
3. 关键点解释
setlocal enabledelayedexpansion
:启用了延迟变量扩展。这意味着在批处理中,变量如 !filename!
将在每次迭代时正确地解析。这是为了确保在循环体内的变量能够正确扩展并传递给 ffmpeg
。
使用 ! 而不是 % 来引用变量:在 for
循环中,我们使用 !filename!
而不是 %filename%
来引用变量。这是因为延迟扩展模式确保了变量在每次循环中都能正确地使用当前文件名。
"%output_directory%\!filename!_part%%03d!extension!"
:确保输出文件名模式是正确的格式,能够支持多个文件的分割。
{/card-list-item}
{card-list-item}
4. 测试
手动单个视频测试,视频文件夹cmd
ffmpeg -i "1.mp4" -c copy -map 0 -segment_time 600 -f segment -reset_timestamps 1 -fs 1000M "output_part%03d.mp4"
评论 (0)