【发布时间】:2012-01-16 19:00:38
【问题描述】:
我正在尝试使用 ffmpeg api 打开一个 directshow 视频源(网络摄像头/推送源),但是我没有任何运气。 我试过使用
av_open_input_file()
但是我认为这不是正确的方法...有人有任何指示吗?
我在 Windows 系统上使用 Visual Studio 和 C++
【问题讨论】:
标签: c++ filter ffmpeg directshow
我正在尝试使用 ffmpeg api 打开一个 directshow 视频源(网络摄像头/推送源),但是我没有任何运气。 我试过使用
av_open_input_file()
但是我认为这不是正确的方法...有人有任何指示吗?
我在 Windows 系统上使用 Visual Studio 和 C++
【问题讨论】:
标签: c++ filter ffmpeg directshow
这不使用 ffmpeg API,但可能会帮助您抓取视频。
我找到了一个sample app on codeproject called LiveVideo,它可以使用 DirectShow 从网络摄像头抓取视频。它是从 2004 年开始的,但有一些类封装了永远难以理解的 DirectShow API,这非常有用。我能够修改这个项目以同时从我的 XP 笔记本电脑上的两个网络摄像头中抓取。
【讨论】:
也许使用 DirectShow + ffmpeg 包装器来获得所需的输出格式?所以,使用 DirectShow 方式打开网络摄像头,而不是 ffmpeg。
【讨论】:
使用 ffmpeg,您可以找到有数据(视频或音频)的设备。
ffmpeg -list_devices true -f dshow -i dummy
就我而言,我的输出如下。
我可以用这段代码轻松打开它。
ffplay -f dshow -i video="ManyCam Virtual Webcam":audio="Mikrofon (ManyCam Virtual Microphone)"
我还可以使用 ffmpeg 重新流式传输或保存此输出。 (注:桌面屏幕也可以通过这段代码获取)
我的例子是使用 ffmpeg 构建而不是核心库。我现在没有 ffmpeg c++ lib,但我可以用 opencv ffmpeg 合并项目来展示它。
【讨论】:
您还可以查看OpenCV examples。
【讨论】: