4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

emscriptenでopencvをffmpeg込みでクロスコンパイルした。

Last updated at Posted at 2018-10-26

OpenCVの定番のネタとして、ffmpeg込みでクロスコンパイルってのがあるが
成功したので覚え書き

まず以下の作業の前にemscriptenの環境を整えて下さい。
それについては省略
私のemscripten のバージョンは1.38.9
またOS環境はubuntu 16.04

1.まずffmpegの最新をgithubから入手
https://github.com/FFmpeg/FFmpeg
私のはchangelogから見て4.0です
でconfigure
emconfigure ./configure --cc=emcc --ar=emar --ranlib=emranlib --prefix=$(pwd)/…/dist --enable-cross-compile --target-os=none --arch=x86_32 --cpu=generic --disable-stripping --disable-programs --disable-asm --disable-doc --disable-pthreads --disable-w32threads --disable-debug --enable-decoder=hevc --enable-parser=hevc --enable-demuxer=hevc --enable-decoder=h264 --enable-parser=h264 --enable-demuxer=h264

この後
make
make install
で出力確認
$(pwd)/…/dist

libavcodec.a libavfilter.a libavutil.a libswscale.a
libavdevice.a libavformat.a libswresample.a pkgconfig
こんな感じです
pkgconfigに注意して下さい。後で使います。

2.OpenCVをダウンロード
https://github.com/opencv/opencv
contribもいるのならダウンロード
これはいろいろあって最新でなく3.2.0固定です。(最悪)
それ以外だとうまくいかない。
具体的には これより下位バージョンじゃpkgconfigが読めない。
上位だとsoftfloatの機能がうまくコンパイルできなかった。
でcmake
emcmake cmake .. -DCMAKE_INSTALL_PREFIX="hogehoge"
-DCMAKE_BUILD_TYPE="Release"
-DCMAKE_C_FLAGS=-I${EMSCRIPTEN}/system/lib/libcxxabi/include/
-DCMAKE_CXX_FLAGS=-I${EMSCRIPTEN}/system/lib/libcxxabi/include/
-DBUILD_SHARED_LIBS=OFF
-DBUILD_DOCS=OFF
-DBUILD_EXAMPLES=OFF
-DBUILD_FAT_JAVA_LIB=OFF
-DBUILD_JASPER=OFF
-DBUILD_PACKAGE=OFF
-DBUILD_CUDA_STUBS=OFF
-DBUILD_opencv_java=OFF
-DBUILD_opencv_python=OFF
-DBUILD_opencv_apps=OFF
-DBUILD_JPEG=OFF
-DBUILD_PNG=OFF
-DBUILD_opencv_apps=OFF
-DBUILD_opencv_videoio=OFF
-DBUILD_opencv_highgui=OFF
-DBUILD_opencv_imgcodecs=OFF
-DBUILD_opencv_python2=OFF
-DENABLE_SSE=OFF
-DENABLE_SSE2=OFF
-DENABLE_SSE3=OFF
-DENABLE_SSE41=OFF
-DENABLE_SSE42=OFF
-DENABLE_SSSE3=OFF
-DENABLE_AVX=OFF
-DWITH_TIFF=OFF
-DWITH_OPENEXR=OFF
-DWITH_1394=OFF
-DWITH_JPEG=OFF
-DWITH_PNG=OFF
-DWITH_FFMPEG=OFF
-DWITH_OPENCL=OFF
-DWITH_GIGEAPI=OFF
-DWITH_CUDA=OFF
-DWITH_CUFFT=OFF
-DWITH_FFMPEG=OFF
-DWITH_GIGEAPI=OFF
-DWITH_GPHOTO2=OFF
-DWITH_GSTREAMER=OFF
-DWITH_GSTREAMER_0_10=OFF
-DWITH_JASPER=OFF
-DWITH_IMAGEIO=OFF
-DWITH_IPP=OFF
-DWITH_IPP_A=OFF
-DWITH_TBB=OFF
-DWITH_OPENNI=OFF
-DWITH_QT=OFF
-DWITH_QUICKTIME=OFF
-DWITH_V4L=OFF
-DWITH_LIBV4L=OFF
-DWITH_MATLAB=OFF
-DWITH_OPENCL=OFF
-DWITH_OPENCLCLAMDBLAS=OFF
-DWITH_OPENCLCLAMDFFT=OFF
-DWITH_OPENCL_SVM=OFF
-DWITH_WEBP=OFF
-DWITH_VTK=OFF
-DWITH_PVAPI=OFF
-DWITH_EIGEN=OFF
-DWITH_GTK=OFF
-DWITH_OPENCLAMDBLAS=OFF
-DWITH_OPENCLAMDFFT=OFF
-DBUILD_TESTS=OFF
-DBUILD_PERF_TESTS=OFF
-DWITH_PTHREAD_PF=OFF
でこのあとcmake-guiでちまちまいじるが注意としてスレッド絡みの機能はONにしないこと
extra module入れたりprefixを変えたりしてください。
で make
make install
うまくいくと *.a が大量に出ます。
-j4とか入れたいなら入れてください。
まずこれで自分のソースにいれ使って確認。
私はopenframeworksでした。

3.pkgconfigを使ってffmpegを取り込む
具体的には
$ export PKG_CONFIG_LIBDIR="hogehoge/pkgconfig"
ほげほげは1のpkgconfignの場所です。
このあとcmake-guiでWITH_FFMPEGをONでgenerateすると
Video I/O:
FFMPEG: YES
avcodec: YES (ver 58.33.100)
avformat: YES (ver 58.19.100)
avutil: YES (ver 56.19.101)
swscale: YES (ver 5.2.100)
avresample: NO
みたいのがうまく行くと出ます。
最後のNOがちょっと気になるがそれはネットで調べるとノーマターらしいです。
なに言ってるか分からん人はLINUXに詳しい人に聞いてください。

でmake
make install

で最終的に*.aを自分のソースにいれ確認
私はopenframeworksでした。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?