半自动ffmpeg视频分段切割,windows版
前言
事情的起因是这样的,原神开服也有一阵了。几乎所有剧情我都是开着录屏来玩的。现在剧情全推完了看了下录屏文件夹也录了180多G了所以想着就上传到百度盘吧。然后

........单文件有点大,然后想着用达芬奇切一下结果,达芬奇不支持mkv格式导入,淦!所以就想到了ffmpeg。但ffmpeg切割视频的命令是这样的
ffmpeg -ss start -i videoName -t duration -c:a copy -c:v copy seqName.mp4
start:开始时间
duration:持续时间
所以手动输入有点麻烦,就简单学习了一下批处理并用bat封装了一下.
正文
BAT常规命令
echo
向控制台打印 如echo hello world
它还有一些其他功能如 echo off
正常批处理执行时都会在命令行显示当前执行的命令,echo off
表示从该行起不再显示当前正在执行的命令。同理echo on
与其功能相反
dir
显示文件夹内容
cd
切换目录
md
创建目录
copy
文件复制
cls
清平
del
文件删除
ren
文件重命名
pause
暂停
rem/::
注释
:
定义程序段,可用goto
跳转到此,使用goto eof
结束程序段
goto
跳转
下面是本次处理会用到的命令
set
用于定义或为变量赋值,它有俩个可选参数
/a
表示其后的参数将以数字形式操作例如set a=1+1 echo %a%
将输出1+1set /a a=1+1 echo %a%
将输出2
/p
表示接收用户输入,将用户输入赋值给当前变量例如set /p a=请输入
那么a的值就等于用户输入的数据
for
for循环有好几种形式,这里我介绍将要使用的一种形式
for %%i in (start,step,end) do (command)
%%i
每次循环的索引值,start
开始索引,step
每次循环索引的步进,end
结束索引,这里注意如果是在命令行中直接运行需要将%%i
改写为%i
。
当我们在编写某种编程语言经常会使用for并且for循环中会对外部变量做出更改,这里注意bat中不能直接访问外部变量,需要在for之前(一般在文件开头)加入setlocal enabledelayedexpansion
并且在for循环内不再以%varName%
作为取值依据应换为!varName!
ok,基础就到这里下面是bat源文件
bat源文件
@echo off
title 视频切割
setlocal enabledelayedexpansion
set /p videoName=输入视频名称:
set /p seqName=输入序列名:
set /p timelength=输入视频时长(单位秒):
set /p segcount=想分为多少段:
set /a segmentlength=(%timelength%+%segcount%-1)/%segcount%
set /a start=0
for /L %%i in (1,1,%segcount%) do (
ffmpeg -ss !start! -i %videoName% -t %segmentlength% -c:a copy -c:v copy !seqName!%%i.mp4
set /a start=!start!+!segmentlength!
)
pause
使用注意:需为ffmpeg配置环境变量
最后:
大幻梦森罗万象狂气断罪眼\ (•◡•) /
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术