Git submodule使用方法
git的submodule可以用于在项目中添加子项目,这样就可以让主项目可以引用子项目的同时,子项目又可以进行独立的版本控制管理。当子项目有了更新之后,可以便捷的在主项目中对相应子项目进行更新。
git的submodule可以用于在项目中添加子项目,这样就可以让主项目可以引用子项目的同时,子项目又可以进行独立的版本控制管理。当子项目有了更新之后,可以便捷的在主项目中对相应子项目进行更新。
Shell脚本简单入门,如果你分不清shell是什么,此文一定不适合你。毕竟只花了十多分钟看的教程,不会涉及细节,细节将在以后的使用中逐渐以示例形式给出。
接上一篇关于JNI的基本入门Java通过JNI调用C/C++动态链接库之HelloWorld,简述给JNI函数传递参数,以及通过JNI函数返回值的方式。
Java可以通过JNI(Java Native Interface)来调用本地库,从而解决一些需要使用C/C++来提高效率但却需要使用JAVA调用的场景,例如opencv库编写的图像处理函数,需要使用spark等大数据框架来调用。
网上关于Linux中动态链接库和动态链接库的博客有很多,其实大部分博客都没有分清楚linux下面动态链接库运行时的查找路径跟编译期的查找路径并不相同,导致很多人在编译程序时库引用出错,按教程添加库路径后依然出错。下面一并总结,不涉及太多二进制中ELF的相关内容。
Linux系统中有大量共用的动态链接库和静态链接库,当对程序源代码编译之后进行链接时往往需要引用系统中已经有的动态链接库或静态链接库。关于动态链接库可以简单理解为在链接时只是将动态库中需要引用的内容(包括变量、函数)在目标程序的符号表中创建一个链接,只在运行到该部分调用时才去查看动态链接库,linux下动态链接库通常为libxxx.so,windows下为.dll。而静态链接库是将整个库一并打包到链接后的目标程序中,并直接映射好所需要的符号表,静态链接库后缀通常为.a,windows下通常为.lib。如果也不明白符号表,可以参考实例验证C/C++源代码变成程序的过程
FFmpeg支持大量的音视频压缩格式和编解码格式,通常大家所说的视频格式(format)就可以理解为压缩格式(container)或者混流格式(Muxing),例如avi、mp4、mkv等,它们相当于是一个容器,可以将视频与音频数据包装在一起,并让它们能够按照指定的同步方式输出。
编、解码格式(codec)也就是所谓的视频祼流格式(raw bitstream),视频编码格式也很多,现在使用最多的就是H.264,当然H.265要逐渐引领潮流了。其他的编码格式还有很多,例如MPEG-2、MEPG-4 Part 2、MPEG-4 Part 10等
PS:有人的场合切勿尝试百度搜索什么是视频祼流,万恶的百度,可以google
FFMPEG支持创建多种协议的视频流,举例说明使用FFMPEG创建视频流,以及接受视频流
获取HDFS上的视频文件并通过ffmpeg播放,或者通过ffmpeg将视频流转码后存储到HDFS
有些场景下需要为系统设置代理,比如OpenCV3在进行cmake编译时需要在线从amazon下载一些第三方包。现在多数同学采用的代理方案应该都是基于socks5协议,而默认的终端工具支持的代理类型都是http或https,所以这里需要socks协议到http协议的转换,转换之后采用终端的代理变量设置http代理即可。
Ubuntu 16.04下手动编译OpenCV 3.2.0,并提供对FFmpeg以及CUDA 8的支持来使用GPU加速视频图像处理。
考虑到大数据处理系统spark的需要,这里也同时加入opencv对java的支持。