import ffmpeg from cv2 import cv2 as cv2 # import pyaudio def readCamra(): # 初始化摄像头 cv2.namedWindow("camera", 1) # 开启ip摄像头 video = "rtsp://admin:admin@172.16.101.64:8554/live" # 此处@后的ipv4 地址需要改为app提供的地址 cap = cv2.VideoCapture(video) # 截图次数 num = 0 # 分辨率大小 size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) # fps = cap.get(cv2.CAP_PROP_FPS) 帧率过大 # 录视频 # .flv 格式 , 25为 FPS 帧率, (640,480)为大小 # fourcc = cv2.VideoWriter_fourcc(*'flv1') # outVideo = cv2.VideoWriter('output.flv', fourcc, 25, size) # # .mp4格式 , 25为 FPS 帧率, (640,480)为大小 fourcc = cv2.VideoWriter_fourcc(*'mp4v') outVideo = cv2.VideoWriter('output.mp4', fourcc, 60, size) # # .avi格式 , 25为 FPS 帧率, (640,480)为大小 # fourcc = cv2.VideoWriter_fourcc(*'XVID') # out = cv2.VideoWriter('output.avi', fourcc, 60, size) while True: # 读取视频 success, img = cap.read() # 录制视频 outVideo.write(img) # 显示 cv2.imshow("camera", img) # 按键处理,注意,焦点应当在摄像头窗口,不是在终端命令行窗口 key = cv2.waitKey(10) if key == 27: # esc键退出 print("esc break...") break if key == ord('q'): # 保存一张图像 num = num+1 filename = "frames_%s.jpg" % num cv2.imwrite(filename, img) # Clean up outVideo.release() cap.release() cv2.destroyAllWindows() pass def palyvideos(): host = 'rtsp://admin:admin@172.16.101.64:8554/live' # allowed_media_types='audio' 只读取音频流 # 音量大小控制 # ac是声道,ar是采样率 ffmpeg.input(host, allowed_media_types='audio', rtsp_transport='tcp')['a'].filter('volume', 1).output( 'saved_audio.wav', acodec='pcm_s16le', ac=1, ar='16k').overwrite_output().run(capture_stdout=True) # 输出视频文件格式不对 # ffmpeg.input(host, rtsp_transport='tcp').output( # 'saved_rtsp.mp4').overwrite_output().run(capture_stdout=True) pass if __name__ == '__main__': readCamra() # palyvideos()