| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 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()
|