如何把程序调用摄像头而接收到的拍摄的画面,变成我的电脑内存储的视频。
就是在你接收拍摄画面的时候,保存到你的电脑设备里面。根据拍摄摄像头的api 找到对应的sdk 编写代码
用OBS就可以实现,可以了解下,里面有个虚拟摄像头。直接百度obs就行了。
你是用什么程序打开摄像头和电脑里的视频文件视频的呢?
建议使用OpenCV,即可以打开摄像头视频,也可以打开电脑存储的视频文件视频,也就能在它们之间来回切换了。
具体可以参考我写的这篇文章:
Win10系统,用C++调用OpenCV接口,播放本地视频文件,播放本地和网络摄像头_来灵的博客-CSDN博客_opencv 打开本地视频
Python调用OpenCV接口播放本地视频文件、本地和网络摄像头_来灵的博客-CSDN博客
视频文件是由一系列图像组成的,视频的每一帧都是一幅图像。
视频读取的基本步骤为:
(1)创建视频读取/捕获对象;
(2)获取视频的一帧图像;
(3)检查视频获取是否成功;
(4)释放视频读取/捕获对象。
保存视频文件的基本步骤为:
(1)设置写入视频的格式和参数;
(2)创建视频写入对象;
(3)写入一帧图像;
(4)释放视频写入对象。
OpenCV提供了VideoCapture类和VideoWriter类处理视频流,既可以处理视频文件,也可以处理摄像头设备。
给你一个例程:
# 【0106】视频文件的读取、播放和保存
import cv2 as cv
if __name__ == '__main__':
# 创建视频读取/捕获对象
vedioRead = "../images/nasa_m420p.mov" # 读取视频文件的路径
capRead = cv.VideoCapture(vedioRead) # 实例化 VideoCapture 类
# 设置写入视频图像的高,宽,帧速率和总帧数
width = int(capRead.get(cv.CAP_PROP_FRAME_WIDTH)) # 960
height = int(capRead.get(cv.CAP_PROP_FRAME_HEIGHT)) # 540
fps = round(capRead.get(cv.CAP_PROP_FPS)) # 30
frameCount = int(capRead.get(cv.CAP_PROP_FRAME_COUNT)) # 1826
print(height, width, fps, frameCount)
# 创建写入视频对象
# fourcc = cv.VideoWriter_fourcc('X', 'V', 'I', 'D') # 编码器设置 XVID
fourcc = cv.VideoWriter_fourcc(*'XVID') # 'X','V','I','D' 简写为 *'XVID'
vedioWrite = "../images/nasa.avi" # 写入视频文件的路径
capWrite = cv.VideoWriter(vedioWrite, fourcc, fps, (width, height))
# 读取视频文件,抽帧写入视频文件
frameNum = 0 # 视频帧数初值
timef = 30 # 设置抽帧间隔
while capRead.isOpened(): # 检查视频捕获是否成功
ret, frame = capRead.read() # 读取下一帧视频图像
if ret is True:
frameNum += 1 # 读取视频的帧数
cv.imshow(vedioRead, frame) # 播放视频图像
if (frameNum % timef == 0): # 判断抽帧条件
capWrite.write(frame) # 将当前帧写入视频文件
if cv.waitKey(1) & 0xFF == ord('q'): # 按 'q' 退出
break
else:
print("Can't receive frame at frameNum {}".format(frameNum))
break
capRead.release() # 关闭读取视频文件
capWrite.release() # 关闭视频写入对象
cv.destroyAllWindows() # 关闭显示窗口