python - Vidgear 写视频打不开

标签 python opencv ffmpeg

Source code

命令:( https://drive.google.com/file/d/14YGKIhftAidQVvR_nMWY3oIhcWFzLERE/view?usp=sharing )

没有发生错误。我一直在试图弄清楚如何用 Vidgear 写视频。我正在使用 Windows 和网络摄像头。

错误:“Output.mp4”打开的是黑色。 (https://drive.google.com/file/d/11x-q_w59gdaAECtRIqi0MNGIOZ-Vuati/view?usp=sharing)

# import required libraries
from vidgear.gears import CamGear
from vidgear.gears import WriteGear
import cv2

# Open live video stream on webcam at first index(i.e. 0) device
stream = CamGear(source=0).start()

# retrieve framerate from CamGear Stream and pass it as `-input_framerate` parameter
output_params = {"-input_framerate":stream.framerate}

# Define writer with defined parameters and suitable output filename for e.g. `Output.mp4`
writer = WriteGear(output_filename = 'Output.mp4', **output_params)

# loop over
while True:

    # read frames from stream
    frame = stream.read()

    # check for frame if None-type
    if frame is None:
        break


    # {do something with the frame here}


    # write frame to writer
    writer.write(frame)

    # Show output window
    cv2.imshow("Output Frame", frame)

    # check for 'q' key if pressed
    key = cv2.waitKey(1) & 0xFF
    if key == ord("q"):
        break

# close output window
cv2.destroyAllWindows()

# safely close video stream
stream.stop()

# safely close writer
writer.close()

最佳答案

我是VidGear的作者图书馆。 WriteGear API 工作得很好。你的相机才是这个问题的真正罪魁祸首。
在您的屏幕截图中看到此错误:
enter image description here
此错误是由于您的 Windows 机器上的后端不正确造成的。 请尝试使用此代码来修复此错误:

# import required libraries
from vidgear.gears import CamGear
from vidgear.gears import WriteGear
import cv2

# Open live video stream on webcam at first index(i.e. 0) device
stream = CamGear(source=0, backend=cv2.CAP_DSHOW).start()

# retrieve framerate from CamGear Stream and pass it as `-input_framerate` parameter
output_params = {"-input_framerate":stream.framerate}

# Define writer with defined parameters and suitable output filename for e.g. `Output.mp4`
writer = WriteGear(output_filename = 'Output.mp4', **output_params)

# loop over
while True:

    # read frames from stream
    frame = stream.read()

    # check for frame if None-type
    if frame is None:
        break


    # {do something with the frame here}


    # write frame to writer
    writer.write(frame)

    # Show output window
    cv2.imshow("Output Frame", frame)

    # check for 'q' key if pressed
    key = cv2.waitKey(1) & 0xFF
    if key == ord("q"):
        break

# close output window
cv2.destroyAllWindows()

# safely close video stream
stream.stop()

# safely close writer
writer.close()

关于python - Vidgear 写视频打不开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62367452/

相关文章:

android - 在 android studio 上使用 NDK 构建原生 openCV

FFmpeg 找不到 AV_CODEC_ID_WMAV2

ffmpeg - Libav demuxer 在长 mp4 文件上失败

python - 通过列表 Python 进行搜索和查找

python - 如何将numpy Array 转换为tensorflow 可以分类的数据类型?

python - opencv2 Aruco 库模块不适用于 python

ruby - 无法在 Ruby 中将 ffmpeg 作为子进程运行

python - Scrapy - 按日期抓取链接

python - Numpy:加入结构化数组?

Opencv 与 ffmpeg 和其他 arm 板的第 3 方交叉编译