build_plugins.sh 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #!/bin/bash
  2. set -e
  3. if [ -z $1 ] ; then
  4. echo "$0 <destination directory>"
  5. exit 1
  6. fi
  7. DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
  8. OCV="$( cd "${DIR}/../../.." >/dev/null 2>&1 && pwd )"
  9. mkdir -p "${1}" # Docker creates non-existed mounts with 'root' owner, lets ensure that dir exists under the current user to avoid "Permission denied" problem
  10. DST="$( cd "$1" >/dev/null 2>&1 && pwd )"
  11. CFG=$2
  12. do_build()
  13. {
  14. TAG=$1
  15. D=$2
  16. F=$3
  17. shift 3
  18. docker build \
  19. --build-arg http_proxy \
  20. --build-arg https_proxy \
  21. $@ \
  22. -t $TAG \
  23. -f "${D}/${F}" \
  24. "${D}"
  25. }
  26. do_run()
  27. {
  28. TAG=$1
  29. shift 1
  30. docker run \
  31. -it \
  32. --rm \
  33. -v "${OCV}":/opencv:ro \
  34. -v "${DST}":/dst \
  35. -e CFG=$CFG \
  36. --user $(id -u):$(id -g) \
  37. $TAG \
  38. $@
  39. }
  40. build_gstreamer()
  41. {
  42. TAG=opencv_gstreamer_builder
  43. do_build $TAG "${DIR}/plugin_gstreamer" Dockerfile
  44. do_run $TAG /opencv/modules/videoio/misc/plugin_gstreamer/build.sh /dst $CFG
  45. }
  46. build_ffmpeg_ubuntu()
  47. {
  48. VER=$1
  49. TAG=opencv_ffmpeg_ubuntu_builder:${VER}
  50. do_build $TAG "${DIR}/plugin_ffmpeg" Dockerfile-ubuntu --build-arg VER=${VER}
  51. do_run $TAG /opencv/modules/videoio/misc/plugin_ffmpeg/build-ubuntu.sh /dst ${VER} ${CFG}
  52. }
  53. build_ffmpeg()
  54. {
  55. VER=$1
  56. TAG=opencv_ffmpeg_builder:${VER}
  57. ARCHIVE="${DIR}/plugin_ffmpeg/ffmpeg-${VER}.tar.xz"
  58. if [ ! -f "${ARCHIVE}" ] ; then
  59. wget https://www.ffmpeg.org/releases/ffmpeg-${VER}.tar.xz -O "${ARCHIVE}"
  60. fi
  61. do_build $TAG "${DIR}/plugin_ffmpeg" Dockerfile-ffmpeg --build-arg VER=${VER}
  62. do_run $TAG /opencv/modules/videoio/misc/plugin_ffmpeg/build-standalone.sh /dst ${VER} ${CFG}
  63. }
  64. echo "OpenCV: ${OCV}"
  65. echo "Destination: ${DST}"
  66. build_gstreamer
  67. build_ffmpeg_ubuntu 18.04
  68. build_ffmpeg_ubuntu 16.04
  69. build_ffmpeg 4.1
  70. build_ffmpeg 3.4.5
  71. build_ffmpeg 2.8.15