[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理有什么办法批量分割视频并批量导出?

录制了一些小游戏视频素材,是一关一关的,想批量分割每一关,然后批量导出。


求大佬指教!万分感谢!

利用代码 按照时间分割视频并导出也行。求大佬指教

TOP

回复 2# 877


   请把时间贴出来,我试试。
bat小白,请多指教!谢谢!

TOP

回复 3# 77七

您好大佬,例如这个4分钟的视频,第一关从0秒开始如下:
00:39:11
01:25:00
02:30:40
03:22:45
04:06:12

TOP

回复 4# 877


   这个时间要这么精确吗?
bat小白,请多指教!谢谢!

TOP

回复 5# 77七


    不这么精确也可以,精确到秒就行,感恩大佬!

TOP

本帖最后由 77七 于 2023-8-6 20:50 编辑
  1. @echo off
  2. chcp 65001 >nul
  3. rem 批处理保存为utf-8编码格式,需要ffmpeg。list.txt格式 00:00:00
  4. set n=101
  5. for /f "delims=" %%i in ('dir /b /a-d *.mp4') do (
  6. setlocal enabledelayedexpansion
  7. for /f "useback tokens=1-2 delims=:" %%a in ("list.txt") do (
  8. set /a ss=%%a*60+%%b
  9. if not defined str (
  10. set str=!ss!
  11. ) else (
  12. set /a t=ss-str
  13. ffmpeg -i "%%i" -ss !str! -t !t! -c copy "%%~ni_cut_!n:~-2!%%~xi"
  14. set /a n+=1
  15. set str=!ss!
  16. )
  17. )
  18. endlocal
  19. )
  20. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 7# 77七


    大佬好,我把
00:39:11
01:25:00
02:30:40
03:22:45
04:06:12
复制到list.txt分割出来的是4个1kb的视频文件,
video_cut_01.mp4
video_cut_02.mp4
video_cut_03.mp4
video_cut_04.mp4
是不是list.txt里面内容写的不对呢?

TOP

回复 8# 877

已按你的时间格式修改。
bat小白,请多指教!谢谢!

TOP

回复 9# 77七


    例如这4个时间,我感觉代码只是截取了当时那1秒,因为生成出来的视频只有1kb。
怎样定义它从00:00:00至00:39:00分割呢?这样应该就可以了。

TOP

回复 10# 877


   刚才已经修改了。是默认 0秒至39秒那一段也要吗?
  1. @echo off
  2. chcp 65001 >nul
  3. rem 批处理保存为utf-8编码格式,需要ffmpeg。list.txt格式 00:00:00
  4. set n=101
  5. for /f "delims=" %%i in ('dir /b /a-d *.mp4') do (
  6. setlocal enabledelayedexpansion
  7. for /f "useback tokens=1-2 delims=:" %%a in (`echo 00:00:00^&type "list.txt"`) do (
  8. set /a ss=%%a*60+%%b
  9. if not defined str (
  10. set str=!ss!
  11. ) else (
  12. set /a t=ss-str
  13. ffmpeg -i "%%i" -ss !str! -t !t! -c copy "%%~ni_cut_!n:~-2!%%~xi"
  14. set /a n+=1
  15. set str=!ss!
  16. )
  17. )
  18. endlocal
  19. )
  20. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 11# 77七


    太棒了大佬! 可以了可以了!

万分感谢大佬!

TOP

回复 11# 77七


    大佬休息没?多文件夹下视频如何批量合并为以文件夹命名的多个视频呢?发新帖向您求助了~

TOP

本帖最后由 Wypo 于 2023-8-9 14:29 编辑

回复 13# 877
  1. @echo off
  2. rem 文件要求,MPEG类的可拼接的格式。直接转avi文件格式
  3. rem %userprofile%\desktop\视音频合并.bat
  4. rem %userprofile%\desktop\合并列队
  5. rem %userprofile%\desktop\合并列队\名称A
  6. rem %userprofile%\desktop\合并列队\AABB
  7. rem %userprofile%\desktop\合并列队\1234
  8. rem [media:]1.avi,2.avi,3.avi...200.avi
  9. rem \视音频合并.bat:
  10. rem sFdp:批量目录位置/sInFx:要合并的格式/sOtFx:要保存的格式
  11. set sFdp=%~dp0合并列队
  12. set sInFx=.avi
  13. set sOtFx=.avi
  14. set FFMPEG=X:\ffmpeg\bin\ffmpeg.exe
  15. set FFMPEG=C:\Users\pc\Desktop\UTOOL\API\FFmpeg\ffmpeg-N-109469-g62da0b4a74-win64-gpl-shared\bin\ffmpeg.exe
  16. set sFdp=%sFdp:"=%
  17. set sFdp=%sFdp:"=%
  18. for /f "tokens=*" %%a in ('dir /ad/b "%sFdp%"') do (
  19. for /f "tokens=*" %%b in ('
  20. dir /a-d/b "%sFdp%\%%~a"
  21. ^|find /c /i "%sInFx%"
  22. ') do if %%b gtr 0 (
  23. setlocal ENABLEDELAYEDEXPANSION
  24. set asList[]=concat:
  25. for /l %%c in (1,1,%%b) do (
  26. if exist "%sFdp%\%%~a\%%c%sInFx%" (
  27. set "asList[]=!asList[]!/%sFdp%\%%~a\%%c%sInFx%"
  28. )
  29. )
  30. set "asList[]=!asList[]::/=:!"
  31. set "asList[]=!asList[]:/=|!"
  32. rem
  33. set "sOtFn=%%~a"
  34. if exist "%sFdp%\%%~a\!sOtFn!%sOtFx%" (
  35. set $NUL=!Date:~0,10!
  36. set $NUL=!$NUL:/=!
  37. set SYS_DATE_TIME=!$NUL:~-8!
  38. set !NUL=00000000!time:.=!
  39. set $NUL=!$NUL: =0!
  40. set $NUL=!$NUL::=!
  41. set SYS_DATE_TIME=!SYS_DATE_TIME!!$NUL:~-8!
  42. set "sOtFn=!sOtFn!_!SYS_DATE_TIME!"
  43. )
  44. call "%FFMPEG%" -i "!asList[]!" -c:v h264 -c:a aac -q 0 -y "%sFdp%\%%~a\!sOtFn!%sOtFx%"
  45. endlocal
  46. )
  47. )
复制代码

TOP

返回列表