使用OpenCV和PyAudio从网络摄像头录制视频和音频

1 投票
1 回答
2393 浏览
提问于 2025-04-17 16:14

我刚开始学习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 个回答

0

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

撰写回答