c++ - 使用 C++ 访问网络摄像头的 FFMPEG

标签 c++ ffmpeg libavcodec

我到处搜索,找不到任何关于如何在 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/

相关文章:

opengl - 创建视频 com 渲染的 OpenGL 帧

c++ - C++中有没有办法让派生类重写基类静态方法?

android - 确定视频方向的工具

ffmpeg - 使用 ffmpeg 将 RTP 数据包转换为 WAV 或 AU

c++ - FFMPEG 编译自定义

c++ - 如何使用 libavcodec 高效地查找和解码第 N 帧?

c++ - 理解 qthreads - 在线程之间共享数据

c++ - 使用 Winsock 创建 SSL 连接

c++ - 如何正确使用作为其他定义参数的定义? C++

FFmpeg 流式传输低 CRF 导致质量低下