【发布时间】:2014-06-13 09:30:22
【问题描述】:
我正在为流式网络摄像头制作应用程序。我想使用 OpenCV 来捕获相机,ffmpeg 作为编码器,live555 作为服务器。我知道我必须在 live555 中实现 DeviceSource.cpp 来封装编码器以从 ffmpeg 接收帧。但是,似乎没有如何做到这一点的例子。那么任何人都可以为我提供一些关于实现 DeviceSource 的教程或示例。提前致谢。
【问题讨论】:
我正在为流式网络摄像头制作应用程序。我想使用 OpenCV 来捕获相机,ffmpeg 作为编码器,live555 作为服务器。我知道我必须在 live555 中实现 DeviceSource.cpp 来封装编码器以从 ffmpeg 接收帧。但是,似乎没有如何做到这一点的例子。那么任何人都可以为我提供一些关于实现 DeviceSource 的教程或示例。提前致谢。
【问题讨论】:
DeviceSource.cpp 是实现使用实时数据的 Live555 FramedSource 的示例。查看 DeviceSource.cpp 文件并阅读 cmets。特别要注意deliverFrame()中的以下几行:
u_int8_t* newFrameDataStart = (u_int8_t*)0xDEADBEEF; //%%% TO BE WRITTEN %%%
unsigned newFrameSize = 0; //%%% TO BE WRITTEN %%%
这是您设置数据的地方。
【讨论】:
这是一个很好的例子,说明你在这里追求什么:
https://www.imc-store.com.au/Articles.asp?ID=278
这是一个 c++ VS2010 项目,展示了如何使用 FFMPEG 编码原始 RGB 帧,然后将该离散帧发送到 Live555 以进行流式传输。
VS2010项目包含了所有的库和包含文件,所以应该只是解压的情况,在VS2010中运行.sln文件,编译运行!
VLC 源代码同时实现了 FFMPEG 和 Live555,你可以看看他们的代码以获得一些额外的指针!
祝你好运!
【讨论】: