Кажется, я теряю кадры, когда обрезаю видео с помощью ffmpeg.
Вот шаги, которые я предпринимаю:
[Получить номер кадра для вырезания] -> [превратить номер кадра в формат чч: мм: ss.ms] -> [Запустить процесс ffmpeg]
Вот код:
import subprocess
def frames_to_timecode(frame,frameRate):
'''
Convert frame into a timecode HH:MM:SS.MS
frame = The frame to convert into a time code
frameRate = the frame rate of the video
'''
#convert frames into seconds
seconds = frame / frameRate
#generate the time code
timeCode = '{h:02d}:{m:02d}:{s:02f}'.format(
h=int(seconds/3600),
m=int(seconds/60%60),
s=seconds%60)
return timeCode
frameRate = 24.0
inputVideo = r"C:\Users\aquamen\Videos\vlc-record-2018-10-23-17h11m11s-SEQ-0200_animatic_v4_20180827_short.mp4"
outputVideo = r"C:\Users\aquamen\Videos\ffmpeg_test_clip001.mp4"
ffmpeg = r"C:\ffmpeg\ffmpeg-20181028-e95987f-win64-static\bin\ffmpeg.exe"
endFrame = frames_to_timecode(29,frameRate)
startFrame = frames_to_timecode(10,frameRate)
subprocess.call([ffmpeg,'-i',inputVideo,'-ss',startFrame,'-to',endFrame,outputVideo])
Вот изображение исходного видео и отсеченного видео с временными кодами, показывающими, что кадр был потерян в процессе. Код времени должен показывать 00: 01: 18: 10 вместо 00: 01: 18: 11.