前言
事情的起因是這樣的,原神開服也有一陣了成榜。幾乎所有劇情我都是開著錄屏來玩的】蛱颍現(xiàn)在劇情全推完了看了下錄屏文件夾也錄了180多G了所以想著就上傳到百度盤吧。然后
........單文件有點(diǎn)大赎婚,然后想著用達(dá)芬奇切一下結(jié)果刘绣,達(dá)芬奇不支持mkv格式導(dǎo)入,淦挣输!所以就想到了ffmpeg纬凤。但ffmpeg切割視頻的命令是這樣的
ffmpeg -ss start -i videoName -t duration -c:a copy -c:v copy seqName.mp4
start:開始時(shí)間
duration:持續(xù)時(shí)間
所以手動(dòng)輸入有點(diǎn)麻煩,就簡(jiǎn)單學(xué)習(xí)了一下批處理并用bat封裝了一下.
正文
BAT常規(guī)命令
echo
向控制臺(tái)打印 如echo hello world
它還有一些其他功能如 echo off
正常批處理執(zhí)行時(shí)都會(huì)在命令行顯示當(dāng)前執(zhí)行的命令撩嚼,echo off
表示從該行起不再顯示當(dāng)前正在執(zhí)行的命令停士。同理echo on
與其功能相反
dir
顯示文件夾內(nèi)容
cd
切換目錄
md
創(chuàng)建目錄
copy
文件復(fù)制
cls
清平
del
文件刪除
ren
文件重命名
pause
暫停
rem/::
注釋
:
定義程序段,可用goto
跳轉(zhuǎn)到此完丽,使用goto eof
結(jié)束程序段
goto
跳轉(zhuǎn)
下面是本次處理會(huì)用到的命令
set
用于定義或?yàn)樽兞抠x值恋技,它有倆個(gè)可選參數(shù)
/a
表示其后的參數(shù)將以數(shù)字形式操作例如set a=1+1 echo %a%
將輸出1+1set /a a=1+1 echo %a%
將輸出2
/p
表示接收用戶輸入,將用戶輸入賦值給當(dāng)前變量例如set /p a=請(qǐng)輸入
那么a的值就等于用戶輸入的數(shù)據(jù)
for
for循環(huán)有好幾種形式逻族,這里我介紹將要使用的一種形式
for %%i in (start,step,end) do (command)
%%i
每次循環(huán)的索引值蜻底,start
開始索引,step
每次循環(huán)索引的步進(jìn)聘鳞,end
結(jié)束索引薄辅,這里注意如果是在命令行中直接運(yùn)行需要將%%i
改寫為%i
要拂。
當(dāng)我們?cè)诰帉懩撤N編程語言經(jīng)常會(huì)使用for并且for循環(huán)中會(huì)對(duì)外部變量做出更改,這里注意bat中不能直接訪問外部變量站楚,需要在for之前(一般在文件開頭)加入setlocal enabledelayedexpansion
并且在for循環(huán)內(nèi)不再以%varName%
作為取值依據(jù)應(yīng)換為!varName!
ok,基礎(chǔ)就到這里下面是bat源文件
bat源文件
@echo off
title 視頻切割
setlocal enabledelayedexpansion
set /p videoName=輸入視頻名稱:
set /p seqName=輸入序列名:
set /p timelength=輸入視頻時(shí)長(zhǎng)(單位秒):
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配置環(huán)境變量
最后:
大幻夢(mèng)森羅萬象狂氣斷罪眼\ (???) /