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

[文件操作] 【已解决】求助批处理ffpeg读取srt字幕时间码截取影片

本帖最后由 baibat 于 2020-8-10 20:24 编辑

打算从MP4视频中按照外挂字幕的时间码批量截取视频片段并按序号命名,比如原视频文件名为 TEDxPenangRoad.mp4,按srt时间码截取后,命名为clip0001.mp4,clip0002.mp4 ......
srt字幕文件为TEDxPenangRoad.en.srt,内容如下:

0
00:00:00,500 --> 00:00:07,800
So for the past 20 years I've been helping Malaysians and other southeast asians to speak better English

1
00:00:08,230 --> 00:00:12,640
And through training thousands of southeast asians

2
00:00:12,640 --> 00:00:15,150
I've discovered a very surprising truth


.......


我现在是笨办法全部用手工编写的批处理代码处理:
"D:\ffmpeg\ffmpeg.exe"  -i ./TEDxPenangRoad.mp4 -vcodec copy -acodec copy -ss 00:00:00.500 -to 00:00:07.800 ./clip0001.mp4 -y


"D:\ffmpeg\ffmpeg.exe"  -i ./TEDxPenangRoad.mp4 -vcodec copy -acodec copy -ss 00:00:08.230 -to 00:00:12.640 ./clip0002.mp4 -y


......


可否实现批处理直接读取srt文件中的时间码,并连续截取生成视频片段?
有两点注意或需求:
1. srt中时间码为00:00:00,500 --> 00:00:07,800,视频处理代码中的秒与毫秒之间为".",需转换。
2. 有些视频字幕时间码与视频中人物对话时间不是很精确,保险起见,需要人为调整,将对白的起始时间码提前一些,比如500毫秒;结束时间码延迟,比如300毫秒。


求各位高手帮助!!

这一看就是做抖音小视频之类的

TOP

嗯,抖音应该也能用的上 不过我这是想给孩子做学英语的资料的。谢谢smss的关注

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 起始时间提前300ms, 结束时间滞后200ms
  4. set /a t1=300, t2=200
  5. set "n=10000"
  6. for /f "tokens=1-8 delims=:,-> " %%a in ('type a.srt ^| findstr "\-\->"') do (
  7.     set /a "t = ((1%%a - 100)* 3600 + (1%%b - 100) * 60 + 1%%c - 100) * 1000 + 1%%d - 1000 - t1"
  8.     set /a ms = t %% 1000, t /= 1000, h = t / 3600, m = t %% 3600 / 60, s = t %% 60
  9.     set /a h += 100, m += 100, s += 100, ms += 1000, n+=1
  10.     set "st=!h:~1!:!m:~1!:!s:~1!.!ms:~1!"
  11.     set /a "t = ((1%%e - 100)* 3600 + (1%%f - 100) * 60 + 1%%g - 100) * 1000 + 1%%h - 1000 + t2"
  12.     set /a ms = t %% 1000, t /= 1000, h = t / 3600, m = t %% 3600 / 60, s = t %% 60
  13.     set /a h += 100, m += 100, s += 100, ms += 1000
  14.     set "et=!h:~1!:!m:~1!:!s:~1!.!ms:~1!"
  15.     echo "D:\ffmpeg\ffmpeg.exe"  -i ./TEDxPenangRoad.mp4 -vcodec copy -acodec copy -ss !st! -to !et! ./clip!n:~1!.mp4 -y
  16. )
  17. pause
复制代码

TOP

WHY 发表于 2020-8-9 12:37



谢谢WHY君,不过我运行时显示 “系统找不到指定的文件。” 似乎是因为没有指定要读取的srt文件的缘故吗?不懂哎~~

TOP

回复 5# baibat


    4楼代码第7行有个 a.srt 你修改下试试呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 baibat 于 2020-8-10 20:24 编辑

感谢WHY,已解决!

TOP

返回列表