You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetson Nano使用OpenCV VideoWriter无视频生成且无报错求助

Jetson Nano OpenCV录屏无文件生成问题排查方案

问题描述

使用Jetson Nano(型号AT017-NAO-EN70)连接相机,相机画面可正常显示,但运行以下OpenCV代码录制视频时,部分设备能生成视频文件,部分设备无文件生成且控制台无任何报错。已确认相机宽高参数正确,可正常创建文本文件,更换过.avi格式与XVID编码后问题依旧,当前使用Python 3.6.9。

原测试代码:

cap = cv2.VideoCapture(2)
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))
fourcc = cv2.VideoWriter_fourcc(*'avc1')
writer = cv2.VideoWriter('video_name.mp4', fourcc, fps, (frame_width, frame_height))

while (cap.isOpened() == True):
    ret, frame = cap.read()
    if ret == True:
        cv2.imshow("test", frame)
        writer.write(frame)
        if cv2.waitKey(1) & 0XFF == ord("q"):
            break

cap.release()

解决方案与建议

  • 显式释放VideoWriter并销毁窗口:原代码仅释放了摄像头资源,未处理VideoWriter和OpenCV窗口,导致编码缓存未写入磁盘。需在cap.release()后添加:

    writer.release()
    cv2.destroyAllWindows()
    

    Jetson Nano的OpenCV实现中,VideoWriter的写入缓存必须通过release()显式触发刷盘,否则进程退出时可能未完成写入,导致文件为空或不生成。

  • 检查VideoWriter初始化状态:添加初始化成功判断,避免后续无效写入:

    if not writer.isOpened():
        print("VideoWriter初始化失败")
        cap.release()
        exit()
    

    部分Jetson设备因硬件编码支持差异,指定的fourcc编码可能无法被系统兼容,即使无报错也会初始化失败。

  • 使用绝对路径保存视频:部分设备可能因当前工作目录权限问题无法写入文件,尝试指定绝对路径,例如:

    writer = cv2.VideoWriter('/home/nano/recordings/video_name.mp4', fourcc, fps, (frame_width, frame_height))
    

    提前确保目标目录存在且有写入权限,可通过mkdir -p /home/nano/recordings创建目录。

  • 降低FPS或分辨率测试:部分Jetson Nano的硬件编码性能有限,若相机返回的FPS过高(如30帧)或分辨率过大,可能导致编码缓存溢出。尝试手动设置较低参数:

    cap.set(cv2.CAP_PROP_FPS, 15)
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
    # 重新获取参数
    frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    fps = int(cap.get(cv2.CAP_PROP_FPS))
    

    再初始化VideoWriter进行测试。

  • 指定GStreamer后端:Jetson平台的OpenCV依赖GStreamer实现硬件加速,尝试显式指定VideoCapture后端:

    cap = cv2.VideoCapture(2, cv2.CAP_GSTREAMER)
    

    若GStreamer组件缺失,可通过sudo apt-get install gstreamer1.0-tools gstreamer1.0-plugins-good安装。

内容的提问来源于stack exchange,提问作者Chun Wei Huang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 09:42:34