OPCV 保存视频,如何保存特定时长


 一般情况下我们用opencv保存视频,其实调用的也是ffmpeg,所以如果能直接用ffmpeg进行视频合成保存的就用ffmpeg,但是ffmpeg有时候确实很多人用不惯那就用opencv

但是opencv和ffmpeg也会出现一些不明白的事情,例如ffmepg保存视频后,再次合成(这个在自己编写的播放器中可能有问题)出现无法拖拉的情况。

python调用ffmpeg,将图片保存视频,这个时候需要文件夹中图片是有序号的

os.system('ffmpeg -f image2 -r {0} -i {1}/%d.jpg -vcodec libx264  {2}/{3}.mp4 -y' .format(fps_save,(BASE_DIR+'/conv_pic'),folder_path,str(videoname)))

opencv保存成特定时长的视频,一般我们通过fps来进行调节,

例如保存10s视频,fps=照片数量/10

但如果fps是整数时,保存的视频不是10s的,而是9s的,后来将fps加一个扰动,例如下面例子,就好了;查了资料可能是因为视频中的关键帧的问题吧,不确定,还需要继续探索,不过加个扰动确实还是有用的。

fps_save = (len(name_index_conv)/continu_time)-0.00001
 print(fps_save)
            
            # 
  fourcc = cv2.VideoWriter_fourcc(*'AVC1')
  size = (1280,720)
  video_save_path=folder_path+'/'+videoname+'.mp4'
   out = cv2.VideoWriter(video_save_path, fourcc,fps_save,size)

猜你喜欢

转载自blog.csdn.net/qq_51609636/article/details/119596928