[英]How to set codec of parameters in VideoWriter_fourcc?
VideoWriter_fourcc中如何设置参数? 我想设置-pix_fmt yuv420p -preset ultrafast -crf 30
。 x264 支持 crf。 h264 不支持。 opencv 的版本是 4.6.0
import cv2 as cv
capture = cv.VideoCapture('input.mp4', cv.CAP_FFMPEG)
width = int(capture.get(cv.CAP_PROP_FRAME_WIDTH))
height = int(capture.get(cv.CAP_PROP_FRAME_HEIGHT))
fps = capture.get(cv.CAP_PROP_FPS)
fourcc = cv.VideoWriter_fourcc(*'x264')
writer = cv.VideoWriter('output.mkv', cv.CAP_FFMPEG, fourcc, fps, (width, height))
while capture.isOpened:
ret, frame = capture.read()
if not ret:
break
writer.write(frame)
if cv.waitKey(1) == ord('q'):
break
capture.release()
cv.destroyAllWindows()
你可以看看这个答案,他们使用vidgear库将 OpenCV 与 FFmpeg 连接起来。
from vidgear.gears import WriteGear
import cv2
output_params = {"-vcodec":"libx264", "-crf": 30, "-preset": "ultrafast", "-pix_fmt":"yuv420p"}
stream = cv2.VideoCapture(0)
writer = WriteGear(output_filename = 'Output.mp4', compression_mode = True, logging = True, **output_params) #Define writer with output filename 'Output.mp4'
while True:
(grabbed, frame) = stream.read()
if not is grabbed:
break
writer.write(frame)
key = cv2.waitKey(1) & 0xFF
if key == ord("q"):
break
cv2.destroyAllWindows()
stream.release()
writer.close()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.