Board logo

标题: [文本处理] 批处根据时间戳分割,求大神指教~ [打印本页]

作者: 小白来了    时间: 2023-12-15 23:10     标题: 批处根据时间戳分割,求大神指教~

现在遇到的问题是根据提取的时间戳信息将wav分割为多个wav,搞不定~

需求:任意目录下、任意srt和任意wav,然后根据srt里面的时间戳将wav分割为多个~ 新建wav命名的目录保存,分割的wav从1.wav开始~

感谢大佬!求大神给个完整的代码吧~

srt字幕格式:
  1. 1
  2. 00:00:00,030 --> 00:00:00,761
  3. 字幕文字字幕文字
  4. 2
  5. 00:00:00,861 --> 00:00:01,484
  6. 字幕文字字幕文字
  7. 3
  8. 00:00:01,584 --> 00:00:02,307
  9. 字幕文字字幕文字
复制代码
提取时间戳:
  1. @echo off
  2. set "input=1.srt"
  3. set "output=1.txt"
  4. (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 (
  5.     echo %%a
  6. )) > %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
  1. @echo off &setlocal enabledelayedexpansion
  2. if "%~1"=="" exit/b & if "%~2"=="" exit/b
  3. (md "%~dp1%~n1" & cd /d "%~dp1%~n1") 2>nul
  4. set fmp@F="C:\ffmpeg\bin\ffmpeg.exe"
  5. for /f "delims=" %%t in ('findstr /c:" --> " "%~2" ') do (
  6. set "t=%%t" &set "t=!t:,=.!" &set "t=!t:->=to!" &set/a "n+=1"
  7. !fmp@F! -loglevel quiet -i "%~1" -ss !t! -c:a copy "!n!%~x1" -y
  8. if exist "!n!%~x1" echo,分割完成》"%~dp1%~n1\!n!%~x1"
  9. )
  10. endlocal & pause & exit/b
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2