python - cv2.VideoWriter 不会使用 fourcc h.264 写入文件(使用 logitech c920、python 2.7、windows 8)

标签 python opencv video-capture

我是 python (2.7) 和 opencv (3.0)(以及一般的视频流/写作)的新手,所以请原谅。

我使用 logitech c920 作为我的网络摄像头,它可以流式传输以 h264 格式压缩的视频,因此我正在尝试编写一个简单的应用程序来设置 VideoCapture 实例的 4 个属性(fourcc 为 h264;宽度为 1920;高度为 1080 ; 和 fps 到 30),然后将视频录制到名为 test.mp4 的上一级目录中,并在我的屏幕上显示录制内容。这是代码:

import sys
import cv2 as cv

cap = cv.VideoCapture(0)
fourcc = cv.VideoWriter_fourcc('H','2','6','4')                     

cap.set(6, fourcc)
cap.set(3,1920)
cap.set(4,1080)
cap.set(5, 30)                                  

vid = cv.VideoWriter('../test.mp4', fourcc, 20.0, (640,480))     
print vid.isOpened() #returns false :(                                                       
while (cap.isOpened()):                                     

  ret, frame = cap.read()                                  

  if (ret == True):                                        

   #gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)          


   vid.write(frame)

   cv.imshow('window', frame)                           

   if (cv.waitKey(1) & 0xFF == ord('q')):                  
    break

cap.release()
vid.release()                                              
cv.destroyWindow('window')     

cv.imshow('window',frame) 工作正常,属性都已设置;但是,vid.isOpened() 返回 false 很明显我在上面做错了什么。如果我为 fourcc 传递 -1,我可以从编解码器列表中选择并且 i420 可用并表示(对于罗技相机)并且如果我将文件扩展名从 mp4 更改为 avi(我我猜这意味着 i420 不能存储为 .avi?),但是,test.avi 总是很大而且看起来很原始,几秒钟的测试视频有 100MB,而且无法打开。

任何帮助都会很棒,非常感谢

最佳答案

所以到目前为止我发现的解决方法不是那么有效,但它适用于 Ubuntu 16.04。定期编写视频后,我再次使用 H264 编码器将其转换,最终视频大小比我单独使用 opencv 得到的视频小得多。

解决方法如下:

import os # We will use it to access the terminal

# Write the video normally using mp4v and make the extension to be '.mp4'
# Note: the output using "mp4v" coder may be efficient for you, if so, you do not need to add the command below
cv2.VideoWriter('Video.mp4',cv2.VideoWriter_fourcc(*"mp4v"), NewFPS, (width,height))

# When your video is ready, just run the following command
# You can actually just write the command below in your terminal
os.system("ffmpeg -i Video.mp4 -vcodec libx264 Video2.mp4")

关于python - cv2.VideoWriter 不会使用 fourcc h.264 写入文件(使用 logitech c920、python 2.7、windows 8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33134985/

相关文章:

python-2.7 - 属性错误 : 'module' object has no attribute 'RLock' `

android - 在OpenCV2.3.1中使用VideoCapture捕获android相机

c++ - Opencv 写入和读取缓冲区

python - 设置超时/尝试次数/强制停止在 P4Python 中同步有问题的文件

python - 获取 Pandas 中最常见的虚拟变量的子集

python - 如何在Python中用虚线标记给定区域制作分割掩码

java - 如何从 Android 视频录制中实时捕获逐帧图像

python - 激活Anaconda3中的环境

python - 在 pybind11 中使用 opencv 类型

linux - 在 Beagleboard-xm 中打开 CV 和 ubuntu 优化