用于窗口的FFMPEG批处理脚本,用于删除前13秒和最后6秒



所以我在过去的两天里一直在做这件事,在这里搜索文章,很多文章只让我找到了一半的答案。我有大约200个视频都需要批量转换。我只有窗户可以阅读。我已经成功地消除了前13秒没有问题。但是最后6个需要从每个文件中删除。我的最新迭代是:

for %%a in ("*.mp4") do set /a dur=(ffprobe -i "%%a" -show_entries format=duration -v quiet -of csv="p=0") set /a trim=(dur-6 -sexagesimal) ffmpeg -t trim -i "%%a" "output%%~na.mp4"

然而,当我运行这个时;括号不平衡"错误完整读数如下:

C:UsersMeDesktopFFMPEG Test Folder>set /a dur=(ffprobe -i "test.mp4" -show_entries format=duration -v quiet -of csv="p=0") set /a trim=(dur-6 -sexagesimal) ffmpeg -t trim -i "test.mp4" "outputtest.mp4"
Unbalanced parenthesis.

以下是最终工作的内容

@Echo Off
SetLocal
Set "ext=mp4"
Set "opts=-v quiet"
Set "opts=%opts% -print_format "compact=print_section=0:nokey=1:escape=csv""
Set "opts=%opts% -show_entries "format=duration""
If Exist *.%ext% (If Not Exist "Trimmed" MD Trimmed)
For %%a In (*.%ext%) Do Call :Sub "%%~a"
Exit/B
:Sub
For /f "Tokens=1* Delims=." %%a In (
'C:ffmpegbinFFProbe %opts% %1') Do (Set/A "ws=%%a-6.00" & Set "ps=%%b")
rem If %ws% Lss 20 GoTo :EOF
Set/A hh=ws/(60*60), lo=ws%%(60*60), mm=lo/60, ss=lo%%60
If %hh% Lss 10 Set hh=0%hh%
If %mm% Lss 10 Set mm=0%mm%
If %ss% Lss 10 Set ss=0%ss%
C:ffmpegbinFFMpeg -i %1 -ss 00:00:13.0000 -to %hh%:%mm%:%ss%.%ps:~,3% -filter:v "crop=950:720:170:0" -r 24 -c:a copy "Trimmed%~1"

最新更新