首先需要安装插件开发工具,命令如下
sudo apt-get install kurento-media-server-dev
最初使用 sudo apt-get install kurento-media-server-6.0-dev,提示报错
可能是命令升级了。
接下来创建opencv_filter模块。
kurento-module-scaffold.sh <module_name> <output_directory> opencv_filter
在当前目录新建helloworld模块kurento-module-scaffold.sh helloworld ./ opencv_filter。
然后创建一个build 文件夹,并开始生成项目文件
mkdir build
cmake ..
如果执行没有错误,结果如下,顺便看一下我们的目录结构
我们开发的opencv模块,缺少gstreamer的提示先忽略。
接下来的部分,可以参考http://www.voidcn.com/article/p-totjgbzu-bow.html。上面的连接部分内容掠过了,对于初学者不是很详细。歪果仁的一篇文章,有一个错误。新建build并进入以后,开始构建项目应该是cmake .. 而不是cmake ./。应为当前目录没有整个模块的cmakelist文件。
第一次构建后,生成的文件如上。
ModuleNameImpl.cpp // 模块管理相关 ModuleNameImpl.hpp ModuleNameOpenCVImpl.cpp // ModuleNameOpenCVImpl.hpp
前两个文件不应该修改。 最后两个文件将包含模块的逻辑。 ModuleNameOpenCVImpl.cpp文件包含处理方法和参数的函数(必须实现逻辑)。 此外,此文件包含一个称为 process 的函数。 此函数将在每个新帧中调用,因此必须在此函数内实现过滤器的逻辑。
根据歪果仁的思路,往视频内容添加一段文字,方法如下在helloworldOpenCVImpl.cpp 的process中添加
void MeetrixKurentoHelloWorldOpenCVImpl::process (cv::Mat &mat)
{
cv::Point textOrg(100, 100);
putText( mat, "Hello from Meetrix.IO", textOrg, 1, 2, cv::Scalar(0, 0, 0) );
}
然后开始编译,切换到build目录
cmake .. -DCMAKE_INSTALL_PREFIX=/usr && make && sudo make install
可能会出错,错误提示如下
解决办法,修改一下module目录下的CMakelist.txt文件,定位到下面行
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -DHAVE_CONFIG_H -Wall -Werror -std=c++11")
添加参数 -fPIC
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fPIC -DHAVE_CONFIG_H -Wall -Werror -std=c++11")
编译成功,并把module安装到kurento-media-server模块中。
验证一下是否安装成功,可以通过命令行查看
kurento-media-server -v
证明编译安装成功了,重启服务应该可以看到效果了。
service kurento-media-server restart
以上完成服务端逻辑开发,接下来,需要在客户端中完成调用。kurento提供两种客户端接入,java和js。js 客户端编译。再次切换到build目录,查看一下目录结构
运行指令
cmake .. -DGENERATE_JS_CLIENT_PROJECT=TRUE
js 客户端编译成功,运行结果如下
到这里我们就完成了opencv 模块的开发。后续继续探索如何在js端进行调用。