标题: [文件操作] 批处理有什么办法批量分割视频并批量导出? [打印本页]
作者: 877 时间: 2023-8-6 18:06 标题: 批处理有什么办法批量分割视频并批量导出?
录制了一些小游戏视频素材,是一关一关的,想批量分割每一关,然后批量导出。
求大佬指教!万分感谢!
作者: 877 时间: 2023-8-6 18:07
利用代码 按照时间分割视频并导出也行。求大佬指教
作者: 77七 时间: 2023-8-6 18:47
回复 2# 877
请把时间贴出来,我试试。
作者: 877 时间: 2023-8-6 19:00
回复 3# 77七
您好大佬,例如这个4分钟的视频,第一关从0秒开始如下:
00:39:11
01:25:00
02:30:40
03:22:45
04:06:12
作者: 77七 时间: 2023-8-6 19:22
回复 4# 877
这个时间要这么精确吗?
作者: 877 时间: 2023-8-6 19:26
回复 5# 77七
不这么精确也可以,精确到秒就行,感恩大佬!
作者: 77七 时间: 2023-8-6 20:18
本帖最后由 77七 于 2023-8-6 20:50 编辑
- @echo off
- chcp 65001 >nul
- rem 批处理保存为utf-8编码格式,需要ffmpeg。list.txt格式 00:00:00
- set n=101
- for /f "delims=" %%i in ('dir /b /a-d *.mp4') do (
- setlocal enabledelayedexpansion
- for /f "useback tokens=1-2 delims=:" %%a in ("list.txt") do (
- set /a ss=%%a*60+%%b
- if not defined str (
- set str=!ss!
- ) else (
- set /a t=ss-str
- ffmpeg -i "%%i" -ss !str! -t !t! -c copy "%%~ni_cut_!n:~-2!%%~xi"
- set /a n+=1
- set str=!ss!
- )
- )
- endlocal
- )
- pause
复制代码
作者: 877 时间: 2023-8-6 20:44
回复 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里面内容写的不对呢?
作者: 77七 时间: 2023-8-6 20:50
回复 8# 877
已按你的时间格式修改。
作者: 877 时间: 2023-8-6 21:00
回复 9# 77七
例如这4个时间,我感觉代码只是截取了当时那1秒,因为生成出来的视频只有1kb。
怎样定义它从00:00:00至00:39:00分割呢?这样应该就可以了。
作者: 77七 时间: 2023-8-6 21:07
回复 10# 877
刚才已经修改了。是默认 0秒至39秒那一段也要吗?- @echo off
- chcp 65001 >nul
- rem 批处理保存为utf-8编码格式,需要ffmpeg。list.txt格式 00:00:00
- set n=101
- for /f "delims=" %%i in ('dir /b /a-d *.mp4') do (
- setlocal enabledelayedexpansion
- for /f "useback tokens=1-2 delims=:" %%a in (`echo 00:00:00^&type "list.txt"`) do (
- set /a ss=%%a*60+%%b
- if not defined str (
- set str=!ss!
- ) else (
- set /a t=ss-str
- ffmpeg -i "%%i" -ss !str! -t !t! -c copy "%%~ni_cut_!n:~-2!%%~xi"
- set /a n+=1
- set str=!ss!
- )
- )
- endlocal
- )
- pause
复制代码
作者: 877 时间: 2023-8-6 21:25
回复 11# 77七
太棒了大佬! 可以了可以了!
万分感谢大佬!
作者: 877 时间: 2023-8-6 23:05
回复 11# 77七
大佬休息没?多文件夹下视频如何批量合并为以文件夹命名的多个视频呢?发新帖向您求助了~
作者: Wypo 时间: 2023-8-9 14:24
本帖最后由 Wypo 于 2023-8-9 14:29 编辑
回复 13# 877 - @echo off
-
- rem 文件要求,MPEG类的可拼接的格式。直接转avi文件格式
-
- rem %userprofile%\desktop\视音频合并.bat
- rem %userprofile%\desktop\合并列队
- rem %userprofile%\desktop\合并列队\名称A
- rem %userprofile%\desktop\合并列队\AABB
- rem %userprofile%\desktop\合并列队\1234
- rem [media:]1.avi,2.avi,3.avi...200.avi
-
- rem \视音频合并.bat:
-
- rem sFdp:批量目录位置/sInFx:要合并的格式/sOtFx:要保存的格式
- set sFdp=%~dp0合并列队
- set sInFx=.avi
- set sOtFx=.avi
-
- set FFMPEG=X:\ffmpeg\bin\ffmpeg.exe
- set FFMPEG=C:\Users\pc\Desktop\UTOOL\API\FFmpeg\ffmpeg-N-109469-g62da0b4a74-win64-gpl-shared\bin\ffmpeg.exe
-
- set sFdp=%sFdp:"=%
- set sFdp=%sFdp:"=%
- for /f "tokens=*" %%a in ('dir /ad/b "%sFdp%"') do (
- for /f "tokens=*" %%b in ('
- dir /a-d/b "%sFdp%\%%~a"
- ^|find /c /i "%sInFx%"
- ') do if %%b gtr 0 (
- setlocal ENABLEDELAYEDEXPANSION
- set asList[]=concat:
- for /l %%c in (1,1,%%b) do (
- if exist "%sFdp%\%%~a\%%c%sInFx%" (
- set "asList[]=!asList[]!/%sFdp%\%%~a\%%c%sInFx%"
- )
- )
- set "asList[]=!asList[]::/=:!"
- set "asList[]=!asList[]:/=|!"
- rem
- set "sOtFn=%%~a"
- if exist "%sFdp%\%%~a\!sOtFn!%sOtFx%" (
- set $NUL=!Date:~0,10!
- set $NUL=!$NUL:/=!
- set SYS_DATE_TIME=!$NUL:~-8!
- set !NUL=00000000!time:.=!
- set $NUL=!$NUL: =0!
- set $NUL=!$NUL::=!
- set SYS_DATE_TIME=!SYS_DATE_TIME!!$NUL:~-8!
- set "sOtFn=!sOtFn!_!SYS_DATE_TIME!"
- )
- call "%FFMPEG%" -i "!asList[]!" -c:v h264 -c:a aac -q 0 -y "%sFdp%\%%~a\!sOtFn!%sOtFx%"
- endlocal
- )
- )
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |