我有一个很小的python程序,它可以很好地使用ffmpeg的子进程从linux中的网络摄像头(至少对于有内置网络摄像头的笔记本电脑)捕获短视频。在
现在我正试图编写同样的程序来捕捉windows中的网络摄像头,我知道我不能使用通用的“/dev/video0”,它在linux下运行得很好,但我认为将其命名为“集成摄像头”就足够了,但它失败了。在
以下是我的linux代码(很有用):import sys
from subprocess import call
from datetime import datetime
def record_webcam(seconds):
cam = '/dev/video0'
timestamp = datetime.now().strftime('%Y%m%d-%H%M%S')
filename = timestamp + 'something.mkv' #generated with more complexity in the actual code, but that isn't important
ffmpeg_cmd = 'ffmpeg -t {} -an -i {} -c:v libx264 -preset veryslow -crf 25 {}'.format(seconds, cam, filename).split()
p = call(ffmpeg_cmd)
return filename if p == 0 else False
if __name__ == '__main__':
record_webcam(sys.argv[1])
我看过ffmpeg的文档并试图寻找解决方案,但到目前为止我还是迷路了。。。在
我知道“集成摄像头”只能在一些笔记本电脑上使用,而不能在其他笔记本电脑上使用,而且它不会捕捉连接的其他摄像头,但对于我的用例来说,这已经足够了。。。但如果你想挑战,我也想知道如何将它应用到任何带有摄像头的windows电脑上,而不管它叫什么名字。在
另外,只使用python工具(比如OpenCV)来完成我在这里尝试的操作,是更容易还是更推荐?在
提前谢谢!