dos命令+ffmpeg 实现 视频均等分割成多块
先上源码
echo 请输入视频地址: set /p fp= echo 请输入开始时间: set /p st= echo 请输入结束时间: set /p et= echo 请输入分片时间: set /p sgt= echo 注意:循环范围参数要空格。 for /l %%i in (%st%, %sgt%, %et%) do call :aaa %sgt% %%i pause :aaa set /a sgt_2=%2 + sgt ffmpeg -i %fp% -ss %2 -to %sgt_2% -acodec copy -vcodec copy %2.mp4
分析:
1.echo 是DOS命令中输出语句
2.set /p st= 、set /p et=、是DOS命令中用于接收用户输入的数据的语句,(相当于编程语言中声明一个变量,并给其赋值)
3.fp、st、sgt、都属于是变量(注意:dos命令中一切变量都要用 % ,将其包围起来,
例如 %fp%,当然除了 set /p a= 的时候)
4.后面的是 for循环和call跳转语句他配使用
5.
for 循环的模式 /L
in后面的括号(开始,步长,结束)
DOS命令中for循环 循环体do 只能执行一行命令,所以这里需要跳转语句来执行多行命令,这里我使用的是call跳转语句(他可以传参数),而另外一个goto跳转语句不建议使用(他不可以传参)
call跳转语句,%sgt%是步长参数(即分割视频时间间隔),%%i 是for循环的循环变量参数
接着我们进入跳转语句中 :aaa 中
set /a sgt_2= %2 + sgt (这里的%2就是%%i 循环变量,而sgt是%sgt%)在这做了个简单的运算,这里的sgt_2变量,每循环一次就会对应增加一个步长,与循环变量%%i对应,使得可以更好地执行下的ffmpeg代码
ffmpeg -i %fp% -ss %2 -to %sgt_2% -acodec copy -vcodec copy %2.mp4
这个是ffmpeg命令,-i 表示输入的文件 、-ss 表示开始的时间、-to 表示结束的时间、
-acodec copy -vcodec copy 表示直接复制音视频的编码方式 、%2.mp4 表示以循环变量命名切割后的文件。
OK,下面就演示一下吧!
1.首先,将代码复制到TXT文本中,在该其后缀名为bat批处理文件,然后双击运行。
2.输入相关参数,视频路径为绝对路径、这里的时间以秒为单位,
3.结果。
