ffmpeg 批处理截取片头片尾
创始人
2024-05-15 12:53:38

比如其中一个视频文件总时长为
00:55:09.095

含有片头2分 13秒150毫秒
00:02:13.150
含有片尾3分 13秒030毫秒
00:03:13.030
获得了视频时间,计算和分割不知道怎么弄了

@CD /D "%~dp0"
@echo off&title ffmpeg获取视频时间
for %%a in (*.avi *.mkv *.mp4 *.flv) do (
ffmpeg -i "%%a" 2>&1 | grep -oP "(?<=from ')%%a(?=')|(?<=DURATION        : )[^\.]+\.\d{3}(?=0+)" | sed.exe "3,$d"
)>> 视频时间长度.txtpause

想00:55:09.095减去片尾时间00:03:13;030,从片头00:02:13;150到00:51:56.065处保存为新视频文件。

某文件夹内很多个视频,视频总长时间不等,所有视频片头片尾时间一致,如何获取视频总长时间后去掉片头片尾,直接截取中间部分放入目录下的“已切割”文件夹?

问题解决:
片头:s1=00:00:45.240
片尾:s2=00:01:30.090

@echo off & setlocal enabledelayedexpansion
set "s1=00:00:45.240"
set "s2=00:01:30.090"
for /f "tokens=1-4delims=:." %%a in ("%s2%") do (set /a "t2=(1%%a %% 100 *3600 + 1%%b %% 100 * 60 + 1%%c %% 100) * 1000 + 1%%d %% 1000"
)md NEW 2>nul
for %%i in (*.avi *.mkv *.mp4 *.flv) do (for /f "tokens=2-5delims=:., " %%a in ('ffmpeg -i "%%i" 2^>^&1 ^| find "Duration:"') do (set /a "t=(1%%a%%100*3600+1%%b%%100*60+1%%c%%100)*1000+1%%d0%%1000,t-=t2,ms=t%%1000,t/=1000"set /a h=t/3600,m=t%%3600/60,s=t%%60,h+=100,m+=100,s+=100,ms+=1000set "t=!h:~1!:!m:~1!:!s:~1!.!ms:~1!"ffmpeg -i "%%i" -ss !s1! -to !t! -vcodec copy -acodec copy "NEW\%%i" -y)
)
pause

http://www.bathome.net/thread-54211-1-3.html

相关内容

热门资讯

demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...