Python CV2提取带字幕的视频帧

时间:2020-05-13 13:33:23

标签: python opencv ffmpeg python-3.7 cv2

我有一个带字幕的视频文件path = 'my/path' os.chdir(path) os.getcwd() /my/path 。我想提取帧,但是我也希望字幕在这些帧上,字幕在文件中作为单独的轨道显示。

当前,我使用以下代码提取:

result.mp4

可以正常工作,但是正如我所说,帧中不包括字幕。仅当我将字幕硬编码到看起来不一样且需要大量时间的视频中时,才能提取带有字幕的帧。

opencv是否有一种方法可以提取带有在单独轨道上的潜艇的帧?

仅供参考: 我使用此FFMPEG命令将vidcap = cv2.VideoCapture("result.mp4") success,image = vidcap.read() count = 0 while success: cv2.imwrite("frame%d.jpg" % count, image) success,image = vidcap.read() print('Read a new frame: ', success) count += 1 .mp4合并:

.srt

大约一秒钟即可完成

但是如果我对其进行硬编码:

ffmpeg -i ourvid.mp4 -i ourvid.srt -c:s mov_text -c:v copy -c:a copy result.mp4 -f srt

(在完成时间内)平均至少要占用源视频长度的一半

1 个答案:

答案 0 :(得分:0)

本质上,我认为cv2无法做到这一点,但是ffmpeg可以使用以下命令来做到这一点:

ffmpeg -i ourvid.mp4 -vf select='between(n\,x\,y)',subtitles=ourvid.srt -q:v 2 frames%d.jpg

其中xy是范围的开始和结束以提取帧 所以我只用

os.system("ffmpeg -i ourvid.mp4 -vf select='between(n\,3901\,3901)',subtitles=ourvid.srt -q:v 2 frames%d.jpg")

从我的python脚本运行它

不是很好的方法,但这是我到目前为止发现的唯一方法