标题: [文件操作] 【已解决】求助批处理ffpeg读取srt字幕时间码截取影片 [打印本页]
作者: baibat 时间: 2020-8-8 12:10 标题: 【已解决】求助批处理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毫秒。
求各位高手帮助!!
作者: smss 时间: 2020-8-8 17:40
这一看就是做抖音小视频之类的
作者: baibat 时间: 2020-8-8 22:17
嗯,抖音应该也能用的上 不过我这是想给孩子做学英语的资料的。谢谢smss的关注
作者: WHY 时间: 2020-8-9 12:37
- @echo off
- setlocal enabledelayedexpansion
- REM 起始时间提前300ms, 结束时间滞后200ms
- set /a t1=300, t2=200
- set "n=10000"
-
- for /f "tokens=1-8 delims=:,-> " %%a in ('type a.srt ^| findstr "\-\->"') do (
- set /a "t = ((1%%a - 100)* 3600 + (1%%b - 100) * 60 + 1%%c - 100) * 1000 + 1%%d - 1000 - t1"
- set /a ms = t %% 1000, t /= 1000, h = t / 3600, m = t %% 3600 / 60, s = t %% 60
- set /a h += 100, m += 100, s += 100, ms += 1000, n+=1
- set "st=!h:~1!:!m:~1!:!s:~1!.!ms:~1!"
- set /a "t = ((1%%e - 100)* 3600 + (1%%f - 100) * 60 + 1%%g - 100) * 1000 + 1%%h - 1000 + t2"
- set /a ms = t %% 1000, t /= 1000, h = t / 3600, m = t %% 3600 / 60, s = t %% 60
- set /a h += 100, m += 100, s += 100, ms += 1000
- set "et=!h:~1!:!m:~1!:!s:~1!.!ms:~1!"
- echo "D:\ffmpeg\ffmpeg.exe" -i ./TEDxPenangRoad.mp4 -vcodec copy -acodec copy -ss !st! -to !et! ./clip!n:~1!.mp4 -y
- )
- pause
复制代码
作者: baibat 时间: 2020-8-9 19:29
WHY 发表于 2020-8-9 12:37
谢谢WHY君,不过我运行时显示 “系统找不到指定的文件。” 似乎是因为没有指定要读取的srt文件的缘故吗?不懂哎~~
作者: Batcher 时间: 2020-8-10 10:10
回复 5# baibat
4楼代码第7行有个 a.srt 你修改下试试呢?
作者: baibat 时间: 2020-8-10 10:49
本帖最后由 baibat 于 2020-8-10 20:24 编辑
感谢WHY,已解决!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |