繁体   English   中英

如何在 VideoWriter_fourcc 中设置参数的编解码器?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM