为了使我的神经网络在未来的字符识别中更加有效,我设法编写了一个代码来截取我的视频,并且只截取了10帧中的1帧。
新的视频exit_video
被大量删除,因为它比前一个视频快得多
1:当我打印新视频的fps时,尽管进行了抽取,我还是得到了30
2:为什么我的新视频比较重?50000 ko,第一个是42000 ko
谢谢你的帮助
import cv2
#import os
import sys
video = cv2.VideoCapture("./video/inputvideo.mp4")
frameWidth = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
frameHeight = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
frameFourcc = int(video.get(cv2.CAP_PROP_FOURCC))
success,image = video.read()
if not success:
print('impossible de prendre une frame')
sys.exit()
fps = video.get(cv2.CAP_PROP_FPS)
print("fps de base " + str(fps))
print(frameFourcc)
count = 0
exit_file = 'decimated_v1.mp4'
exit_video = cv2.VideoWriter(exit_file, frameFourcc, fps, (frameWidth, frameHeight))
while True:
if ((count % 10 ) ==0):
exit_video.write(image)
success,image = video.read()
if not success:
break
count +=1
exit_video.release()
exit_video_info = cv2.VideoCapture("decimated_v1.mp4")
fps_sortie = exit_video_info.get(cv2.CAP_PROP_FPS)
print("fps de sortie " + str(fps_sortie))
抽取并非全部Intra frames的视频文件需要重新编码。除非您的输入文件是ProRes或MJPEG,否则很可能是这样
由于您没有设置编码参数,OpenCV可能会使用一些默认值,这些默认值的比特率最终高于您的输入文件
使用FFmpeg工具可能比使用OpenCV及其^{} filter 更好
将是从输入中每十帧使用一次的基本语法;然后,您可以添加所需的编码参数,如
-crf
,以调整H.264速率因子,当然,您也可以完全更改为不同的编解码器相关问题 更多 >
编程相关推荐