编译FFmpeg
安装nasm:(gcc 4.8.5)
axel https://www.nasm.us/pub/nasm/releasebuilds/2.15.02/nasm-2.15.02.tar.gz
tar -zxvf nasm-2.15.02
cd nasm-2.15.02
./configure
make
sudo make install
安装H264:(gcc 4.8.5)
git clone https://github.com/cisco/openh264.git
cd openh264
git checkout -b v2.1.1
make ARCH=x86_64
sudo make install
安装x264: (gcc 4.8.5)
git clone https://code.videolan.org/videolan/x264.git
cd x264
./configure --enable-shared --enable-static --disable-asm
make
sudo make install
从https://johnvansickle.com/ffmpeg/下载源码。
cd ffmpeg-4.3
vi fftools/Makefile
# 修改 $$(OBJS-$(1)): CFLAGS += -fPIC $(CFLAGS-$(1))
用(gcc 4.8.5)编译:
./configure --enable-shared --enable-pic --enable-libopenh264 --enable-encoder=libopenh264 --enable-decoder=libopenh264 --enable-gpl --enable-libx264 --enable-encoder=libx264 --enable-decoder=h264
make
sudo make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig;/usr/local/lib64/pkgconfig;$PKG_CONFIG_PATH
或者:
vi /etc/ld.so.conf.d/local.conf
# 加入:/usr/local/lib
编译OpenCV
用gcc 4.8.5编译:
cd opencv-4.3.0
vi CMakeLists.txt
修改:
# add by sam
add_compile_options(-fPIC -Wl,-Bsymbolic)
# Or
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wl,-Bsymbolic")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wl,-Bsymbolic")
mkdir build
cd build
cmake -D WITH_CUDA=OFF \
-D CMAKE_BUILD_TYPE=Release \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_IPP=OFF \
-D WITH_FFMPEG=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.3.0/modules \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF \
-S .. \
-B ./
make -j4
sudo make install
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/lib64
安装opencv4nodejs
安装node-gyp:
su root
npm install -g node-gyp
切换GCC到v7版本,GCC4会有编译错误:
sudo yum groupinstall 'Development Tools'
sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
修改package.json:
"opencv4nodejs": {
"autoBuildFlags": "-DOPENCV_GENERATE_PKGCONFIG=ON -DOPENCV_PC_FILE_NAME=opencv4.pc",
"autoBuildOpencvVersion": "4.3.0",
"disableAutoBuild": 1,
"opencvIncludeDir": "/usr/local/include/opencv4",
"opencvLibDir": "/usr/local/lib64",
"opencvBinDir": "/usr/local/bin"
}
安装opencv-build,disableAutoBuild等于1是不要git下载opencv,用我们编译好的版本:
npm install opencv-build
安装opencv4nodejs
npm install opencv4nodejs
这个安装方式会更新opencv4nodejs,可以编译出opencv4nodejs.node,算是成功了。
实际上,最后仍然有个Error,可以如下处理:
vi node_modules/opencv4nodejs/binding.gyp
找到cflags,修改为:
"cflags" : [
"-std=c++11","-Wno-misleading-indentation"
],
用npm install opencv4nodejs方式会覆盖修改,采用以下无更新安装方式:
cd node_modules/opencv4nodejs/
# Env
export OPENCV4NODEJS_DISABLE_AUTOBUILD=1
export OPENCV_INCLUDE_DIR=/usr/local/include/opencv4
export OPENCV_LIB_DIR=/usr/local/lib64
#
node-gyp configure
#
node install/install.js