我到处搜索,找不到任何关于如何在 C++ 中使用 ffmpeg 访问网络摄像头的示例或教程。任何示例代码或任何指向我一些文档的帮助,将不胜感激。
提前致谢。
最佳答案
几个月来我一直在研究这个问题。您的第一个“问题”是 ffmpeg(libavcodec 和其他 ffmpeg 库)不访问网络摄像头或任何其他设备。
对于基本的 USB 网络摄像头或音频/视频捕获卡,您首先需要驱动程序软件才能访问该设备。对于 linux,这些驱动程序属于 Video4Linux(众所周知的 V4L2)类别,这些模块是大多数发行版的一部分。如果您使用的是 MS Windows,那么您需要获得允许您访问该设备的 SDK。 MS 可能有一些用于访问通用设备的东西,(但根据我的经验,它们不是很有效,如果它们可以工作的话)如果你已经做到了这一点,那么你现在有原始帧(视频和/或音频)。
然后您进入 ffmpeg 部分 - libavcodec - 它获取原始帧(音频和/或视频)并将它们编码为流,然后 ffmpeg 可以将其混合到您的最终容器中。
我搜索过,但发现所有这些的例子很少,而且大多数都是零散的。
如果您不需要自己实际编写代码,命令行 ffmpeg 和 vlc 可以访问这些设备,捕获并保存到文件,甚至流式传输。
这是我目前能做的最好的事情了。
肯
关于c++ - 使用 C++ 访问网络摄像头的 FFMPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22342869/