找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20125|回复: 8

[其他] [已解决]批处理如何给视频批量截图结尾最后3秒处?

[复制链接]
发表于 2022-9-27 19:16:48 | 显示全部楼层 |阅读模式
本帖最后由 a574045075 于 2022-9-28 17:44 编辑

我有1000多个视频mp4格式,每个视频的时长不一样,有什么方法或软件可以批量截取位于视频结尾最后3秒处的截图,并截图的图片文件名和视频名相同?
发表于 2022-9-27 20:00:04 | 显示全部楼层
本帖最后由 waitfortea 于 2022-9-27 20:01 编辑

这个你得调用视频软件的命令行吧,bat只能帮你循环,如果目标是bat脚本的话
发表于 2022-9-27 20:00:49 | 显示全部楼层
如果视频软件有这个命令行的话,你得把这执行截图 跳转时间的命令行分享出来别人才好帮你
发表于 2022-9-28 11:30:46 | 显示全部楼层
回复 1# a574045075
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 视频结尾最后3秒处
  4. set "SecBack=3"
  5. REM 根据自己电脑实际情况设置ffmpeg的路径
  6. set "path=C:\Program Files\ffmpeg\ffmpeg-n5.1-latest-win64-gpl-5.1\bin\;%path%"
  7. for /f "delims=" %%i in ('dir /b /a-d *.mp4') do (
  8.     echo Current file: %%i
  9.     for /f "tokens=2-5 delims=:., " %%a in ('ffmpeg -i "%%i" 2^>^&1 ^| find "Duration:"') do (
  10.         echo Duration %%a:%%b:%%c:%%d
  11.         set /a "TotalCS=(1%%a%%100*3600+1%%b%%100*60+1%%c%%100)*100+1%%d%%100"
  12.         set /a "SeekCS=TotalCS-SecBack*100"
  13.         set /a "SeekSS=SeekCS/100"
  14.         set /a "HH=SeekSS/3600+100"
  15.         set /a "MM=SeekSS%%3600/60+100"
  16.         set /a "SS=SeekSS%%60+100"
  17.         set /a "CS=SeekCS%%100+100"
  18.         set "SeekPosition=!HH:~1!:!MM:~1!:!SS:~1!.!CS:~1!"
  19.         echo Position !SeekPosition!
  20.     )
  21.     ffmpeg -v quiet -i "%%i" -ss !SeekPosition! -frames:v 1 "%%~ni.png"
  22. )
复制代码

评分

参与人数 1技术 +1 收起 理由
a574045075 + 1 谢谢

查看全部评分

发表于 2022-9-28 13:36:11 | 显示全部楼层
本帖最后由 xp3000 于 2022-9-28 23:17 编辑

ffmpeg截图命令我改了一下确实快了很多
  1. @echo off & setlocal enabledelayedexpansion
  2. title ffmpeg视频尾部X秒批量截图
  3. :a
  4. set /p "str=输入1-9秒:"
  5.    echo %str%|findstr /x "[1-9]" >nul||(echo 输入有误,按任意键返回&goto :a )

  6. for /f "delims=" %%i in ('dir /b /a-d *.avi *.mkv *.mp4 *.flv') do (
  7.     for /f "tokens=2-5delims=:., " %%a in ('ffmpeg -i "%%i" 2^>^&1 ^| find "Duration:"') do (
  8.         set /a "t=(1%%a%%100*3600+1%%b%%100*60+1%%c%%100)*1000+1%%d0%%1000,t-=%str%*1000,ms=t%%1000,t/=1000"
  9.         set /a h=t/3600,m=t%%3600/60,s=t%%60,h+=100,m+=100,s+=100,ms+=1000
  10.         set "t=!h:~1!:!m:~1!:!s:~1!.!ms:~1!"
  11.         echo 文件:%%i 将在!t!处截图,请耐心等待……
  12.         ffmpeg -v quiet -ss !t! -i "%%i" -frames:v 1 "%%~ni.png"
  13.     )
  14. )
  15. pause
复制代码
有时候自己也要用到截图尾部几十秒的
  1. @if(0)==(0) echo off& setlocal EnableDelayedExpansion&cd %~dp0
  2. title ffmpeg视频尾部XX秒批量截图
  3. :ss
  4. set /p ss=请输入秒数(例:5或21):
  5. @for /f "delims=" %%i in ('echo %ss%^|cscript -nologo -e:jscript "%~f0"') do (
  6. if not "%%i"=="正确" echo. & echo 时间格式不对,请重新输入1-59内数字 & goto ss
  7. )
  8. for /f "delims=" %%i in ('dir /b /a-d *.avi *.mkv *.mp4 *.flv') do (
  9.     for /f "tokens=2-5delims=:., " %%a in ('ffmpeg -i "%%i" 2^>^&1 ^| find "Duration:"') do (
  10.         set /a "t=(1%%a%%100*3600+1%%b%%100*60+1%%c%%100)*1000+1%%d0%%1000,t-=%ss%*1000,ms=t%%1000,t/=1000"
  11.         set /a h=t/3600,m=t%%3600/60,s=t%%60,h+=100,m+=100,s+=100,ms+=1000
  12.         set "t=!h:~1!:!m:~1!:!s:~1!.!ms:~1!"
  13.         echo 文件:%%i        将在!t!处截图,请耐心等待……
  14.     )
  15.     ffmpeg -v quiet -ss !t! -i "%%i" -frames:v 1 "%%~ni.jpg"
  16. )

  17. pause & exit /b
  18. @end
  19. WSH.echo(WSH.StdIn.ReadAll().replace(/^[1-5]\d|^[1-9]/, '正确').match(/^[^\r\n]+/).join('\r\n'));
复制代码

评分

参与人数 1技术 +1 收起 理由
a574045075 + 1 ok

查看全部评分

 楼主| 发表于 2022-9-28 16:47:06 | 显示全部楼层
本帖最后由 a574045075 于 2022-9-28 17:02 编辑
回复  a574045075
Batcher 发表于 2022-9-28 11:30



    谢谢了
 楼主| 发表于 2022-9-28 17:36:17 | 显示全部楼层
回复 4# Batcher


    截图太慢了,几十秒截个图,我把命令行改为ffmpeg -v quiet -ss !SeekPosition! -i "%%i" -frames:v 1 "%%~ni.png"速度飞快.
发表于 2022-9-28 17:45:17 | 显示全部楼层
回复 7# a574045075


    就是把  -ss !SeekPosition! 和 -i "%%i" 调换了一下位置是吧?
 楼主| 发表于 2022-9-28 18:10:29 | 显示全部楼层
回复 8# Batcher


    是的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 06:02 , Processed in 0.029268 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表