Google colaboratory 有没有办法在google colab中使用网络摄像头捕捉实时视频?

Google colaboratory 有没有办法在google colab中使用网络摄像头捕捉实时视频?,google-colaboratory,Google Colaboratory,我看到了colab团队提供的一种通过colab捕捉图像的方法,但是有什么方法可以捕捉那里的视频吗?最近我在寻找答案时也看到了这篇文章。最后我不得不写我自己的片段,因为我什么也找不到。这是我最后得到的,以防有帮助。代码分为两个单独的单元。我正在使用python3和googlechrome: 从IPython.display导入显示,Javascript 从google.colab.output导入eval_js 从base64导入B64解码 def录制_视频(filename='video.mp4

我看到了colab团队提供的一种通过colab捕捉图像的方法,但是有什么方法可以捕捉那里的视频吗?

最近我在寻找答案时也看到了这篇文章。最后我不得不写我自己的片段,因为我什么也找不到。这是我最后得到的,以防有帮助。代码分为两个单独的单元。我正在使用
python3
googlechrome

从IPython.display导入显示,Javascript
从google.colab.output导入eval_js
从base64导入B64解码
def录制_视频(filename='video.mp4'):
#此函数使用Colab团队提供的take_photo()函数作为
#起点,以及堆栈溢出中的一些内容,以及一些示例代码
#发件人:https://developer.mozilla.org/enUS/docs/Web/API/MediaStream_Recording_API
js=Javascript(“”)
异步函数recordVideo(){
const options={mimeType:“视频/webm;编解码器=vp9”};
const div=document.createElement('div');
const capture=document.createElement('button');
const stopCapture=document.createElement(“按钮”);
capture.textContent=“开始录制”;
capture.style.background=“绿色”;
capture.style.color=“白色”;
stopCapture.textContent=“停止录制”;
stopCapture.style.background=“红色”;
stopCapture.style.color=“白色”;
儿童组(俘虏);
const video=document.createElement('video');
const recordingVid=document.createElement(“视频”);
video.style.display='block';
const stream=await navigator.mediaDevices.getUserMedia({video:true});
let recorder=新的MediaRecorder(流,选项);
文件.正文.附件(div);
儿童部(录像);
video.srcObject=流;
等待视频。播放();
//调整输出大小以适合视频元素。
google.colab.output.setIframeHeight(document.documentElement.scrollHeight,true);
等待新的承诺((决心)=>{
capture.onclick=resolve;
});
recorder.start();
capture.replacetwith(stopCapture);
等待新承诺((resolve)=>stopCapture.onclick=resolve);
录音机。停止();
让recData=等待新承诺((resolve)=>recorder.ondataavailable=resolve);
让arrBuff=wait recData.data.arrayBuffer();
stream.getVideoTracks()[0]。停止();
div.remove();
让binaryString=“”;
let bytes=新的Uint8Array(arrBuff);
字节。forEach((字节)=>{
binaryString+=String.fromCharCode(字节);
})
返回btoa(二进制字符串);
}
""")
尝试:
显示(js)
data=eval_js('recordVideo({}'))
二进制=B64解码(数据)
打开(文件名为“wb”)作为视频文件:
视频文件写入(二进制)
印刷品(
f“已完成视频录制。已将二进制文件保存在当前工作目录的文件名下:{filename}”
)
除异常作为错误外:
#如果出现任何例外情况
打印(str(err))
返回文件名
#运行该功能,获取保存在笔记本中的视频路径,然后在此处播放。
从IPython.display导入HTML
从base64导入b64encode
视频宽度=300
视频路径=录制视频()
视频文件=打开(视频路径,“r+b”).read()
video_url=f“数据:video/mp4;base64,{b64encode(video_文件).decode()}”
HTML(f)

这里有一个指向笔记本的链接:

这太棒了!我尝试在这个片段中使用“const stream=await navigator.mediaDevices.getUserMedia({audio:true,video:true});”也录制视频中的音频,但它引起了大量反馈。你知道如何录制视频和音频吗?@JohnKitchin add
video.muted=true在<代码>等待视频播放()之前+您的更改和反馈将消失,但仍将被记录。