以下是我用于访问IP摄像头并保存传入视频流的Python脚本:
import cv2
from cv2 import cv
writer=cv2.VideoWriter("vid.avi",cv.CV_FOURCC('X', '2', '6', '4'), 24, (320,240))
def cvloop():
stream=urllib.urlopen('URL of the camera')
bytes=''
while True:
bytes+=stream.read(1024)
a = bytes.find('\xff\xd8')
b = bytes.find('\xff\xd9')
if a!=-1 and b!=-1:
jpg = bytes[a:b+2]
bytes= bytes[b+2:]
i = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8),cv2.CV_LOAD_IMAGE_COLOR)
tki = ImageTk.PhotoImage(Image.fromarray(cv2.cvtColor(i, cv2.COLOR_BGR2RGB)))
cv2.imshow('i',i)
writer.write(i)
if cv2.waitKey(1) ==27:
exit(0)
现在,如果您想知道我为什么要从流中解析jpg图像,可以找到答案here。答案解释了一切。
至于视频编写器脚本,我已经参考了可以找到的here的OpenCV文档。
现在我没有使用默认的编解码器列表,而是使用H-264,但我已经尝试了系统上安装的所有编解码器。
问题:现在问题在于执行程序正在制作视频文件,在运行它时我什么都没看到。此外,在使用软件GSpot
分析视频时,我获得了视频中的帧数。 FFMPEG
的情况也是如此。我哪里错了?
Camera: Axis IP Camera M1103
OS: Windows 7 32bit