我有一个带字幕的视频文件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
(在完成时间内)平均至少要占用源视频长度的一半
答案 0 :(得分:0)
本质上,我认为cv2无法做到这一点,但是ffmpeg可以使用以下命令来做到这一点:
ffmpeg -i ourvid.mp4 -vf select='between(n\,x\,y)',subtitles=ourvid.srt -q:v 2 frames%d.jpg
其中x
和y
是范围的开始和结束以提取帧
所以我只用
os.system("ffmpeg -i ourvid.mp4 -vf select='between(n\,3901\,3901)',subtitles=ourvid.srt -q:v 2 frames%d.jpg")
从我的python脚本运行它
不是很好的方法,但这是我到目前为止发现的唯一方法