首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在VideoWriter_fourcc中设置参数编解码器?

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

Stack Overflow用户
提问于 2022-07-01 15:42:03
回答 1查看 71关注 0票数 -1

如何在VideoWriter_fourcc中设置参数?我想设置-pix_fmt yuv420p -preset ultrafast -crf 30。x264支持crf。h264不支持。opencv版本为4.6.0

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2022-07-01 18:29:52

您可以看看这个答案,他们使用振动装置库将OpenCV与FFmpeg连接起来。

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72831665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档