标题: [文本处理] 批处根据时间戳分割,求大神指教~ [打印本页]
作者: 小白来了 时间: 2023-12-15 23:10 标题: 批处根据时间戳分割,求大神指教~
现在遇到的问题是根据提取的时间戳信息将wav分割为多个wav,搞不定~
需求:任意目录下、任意srt和任意wav,然后根据srt里面的时间戳将wav分割为多个~ 新建wav命名的目录保存,分割的wav从1.wav开始~
感谢大佬!求大神给个完整的代码吧~
srt字幕格式:- 1
- 00:00:00,030 --> 00:00:00,761
- 字幕文字字幕文字
-
- 2
- 00:00:00,861 --> 00:00:01,484
- 字幕文字字幕文字
-
- 3
- 00:00:01,584 --> 00:00:02,307
- 字幕文字字幕文字
复制代码
提取时间戳:- @echo off
- set "input=1.srt"
- set "output=1.txt"
- (for /f "tokens=*" %%a in ('findstr "[0-9][0-9]:[0-9][0-9]:[0-9][0-9],[0-9][0-9][0-9] --> [0-9][0-9]:[0-9][0-9]:[0-9][0-9],[0-9][0-9][0-9]" %input%') do (
- echo %%a
- )) > %output%
复制代码
作者: aloha20200628 时间: 2023-12-16 16:42
本帖最后由 aloha20200628 于 2023-12-16 16:52 编辑
假设楼主已经安装使用了ffmpeg.exe(可从本站第三方下载),假设其安装路径如 C:\ffmpeg\bin\ffmpeg.exe
如下代码存为批处理脚本如test.cmd,运行需要的两个命令行参数示例 》test.cmd "d:\wav\xxx.wav" "d:\srt\xxx.srt" 其运行结果会在 d:\wav\xxx 新建目录中生成n个分割文件,如 1.wav ... n.wav- @echo off &setlocal enabledelayedexpansion
- if "%~1"=="" exit/b & if "%~2"=="" exit/b
- (md "%~dp1%~n1" & cd /d "%~dp1%~n1") 2>nul
- set fmp@F="C:\ffmpeg\bin\ffmpeg.exe"
- for /f "delims=" %%t in ('findstr /c:" --> " "%~2" ') do (
- set "t=%%t" &set "t=!t:,=.!" &set "t=!t:->=to!" &set/a "n+=1"
- !fmp@F! -loglevel quiet -i "%~1" -ss !t! -c:a copy "!n!%~x1" -y
- if exist "!n!%~x1" echo,分割完成》"%~dp1%~n1\!n!%~x1"
- )
- endlocal & pause & exit/b
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |