使用 opencv 和 pyaudio 从网络摄像头录制视频和音频

Posted

技术标签:

【中文标题】使用 opencv 和 pyaudio 从网络摄像头录制视频和音频【英文标题】:Video and audio recording from webcam using opencv and pyaudio 【发布时间】:2013-02-18 09:46:23 【问题描述】:

我是 Python 的初学者,想制作一个视频日记,就像 电影《阿凡达》。我想使用 OpenCV。录制我的网络摄像头的视频流已经可以了,但是如何同时保存我的网络摄像头的视频和音频? 顺便说一句:我正在使用 Linux 和 python 2.7

我当前的视频录制代码:

 #!/usr/bin/python
 time = localtime()
 s = "%02i:%02i:%02i_%02i-%02i-%02i" % (time[3],time[4],time[5],time[2],time[1],time[0])
 global fn
 fn = "%02i_%02i_%02i__%02i_%02i_%02i" % (time[3],time[4],time[5],time[2],time[1],time[0])
 recordingtime=str(s)

 videodir="./Videos/"
 # Set video settings
 capture = cv.CaptureFromCAM(0)
 fourcc = cv.CV_FOURCC('M','J','P','G')
 fps = 25
 w, h = 720, 540
 stream = cv.CreateVideoWriter(video.avi", fourcc, fps, (w, h))

 # recording time
 recordingtime = 20
 recstart = int(time())

 while True:
     now = int(time())
     recdiff = now - recstart
     counter = recdiff - recordingtime
     if counter <= 0 :
         # start timer
         rectime = recordingtime
    frame = cv.QueryFrame(capture)

         # write stream
    # Display text
    ## color settings for text
    r=255 
    g=255 
    b=255 
         ## Text position
    tx = 450 
    ty = 330
    font = cv.InitFont(cv.CV_FONT_HERSHEY_COMPLEX, .7, .7, 0, 1, 20)
    cv.PutText(frame, recordingtime, (ty,tx),font, (b,g,r))
    cv.WriteFrame(stream, frame)

         ## Farbdefinition des eingeblendeten Textes
    r=255 
    g=0 
    b=0 

         ## Textposition
    tx = 450 
    ty = 50 
    font = cv.InitFont(cv.CV_FONT_HERSHEY_COMPLEX, 2, 2, 0, 4, 20)
    cv.PutText(frame, str(counter)[1:], (ty,tx),font, (b,g,r))

    # show window
    cv.ShowImage("capture", frame)
         # move window
    cv.MoveWindow ("capture", 550,400)
    key = cv.WaitKey(10)
    if key & 255 == 27:
        sys.exit()

     else :
    break

提前感谢您的帮助。

干杯 M.

【问题讨论】:

【参考方案1】:

很遗憾,opencv 中不支持音频流

【讨论】:

以上是关于使用 opencv 和 pyaudio 从网络摄像头录制视频和音频的主要内容,如果未能解决你的问题,请参考以下文章

使用 openCV 和 wxPython 从网络摄像头获取流

OpenCv - 从网络摄像头捕获帧时发生内存泄漏

OpenCV 从网络摄像头流中分离出剪影

OpenCV:使用 cvWriteFrame 从网络摄像头写入视频时出现内存泄漏

无法使用 OpenCV 从辅助网络摄像头读取 VideoCapture 中的帧

洞察使用 python 和 OpenCV 与 VideoCapture 进行多网络摄像头捕获