我有一个使用opencv视频编写器的工作python脚本。
来源https://gist.github.com/stanchiang/b4e4890160a054a9c1d65f9152172600
如果我接收一个文件,无论我是否只是将视频帧传递给编写器(有效地复制文件),或者如果我尝试编辑该帧,该文件总是更大。我希望它不比原版大(因为如果你读我的剧本我会模糊很多东西)。
用ffprobe -v quiet -print_format json -show_format -show_streams inputFile.mp4
检查元数据后,我注意到新文件的比特率比以前高出5.5倍。
来源https://www.diffchecker.com/8r2syeln
由于比特率是文件大小的重要决定因素,我想知道是否
答案 0 :(得分:2)
基本上这个答案https://stackoverflow.com/a/13298538/1079379
# import packages
from PIL import Image
from subprocess import Popen, PIPE
from imutils.video import VideoStream
from imutils.object_detection import non_max_suppression
from imutils import paths
import cv2
import numpy as np
import imutils
# ffmpeg setup
p = Popen(['ffmpeg', '-y', '-f', 'image2pipe', '-vcodec', 'mjpeg', '-r', '24', '-i', '-', '-vcodec', 'h264', '-qscale', '5', '-r', '24', 'video.mp4'], stdin=PIPE)
video = cv2.VideoCapture('videos.mp4')
while True:
ret, frame = video.read()
if ret:
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
im = Image.fromarray(frame)
im.save(p.stdin, 'JPEG')
else:
break
p.stdin.close()
p.wait()
video.release()
cv2.destroyAllWindows()