ohos_ijkffmpeg_config.sh 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. # FFmpeg build configure
  2. #!/bin/bash
  3. FFMPEG_PATH=$1
  4. FFMPEG_OUT_PATH=$2
  5. echo "***开始准备编译ffmpeg***"
  6. echo $FFMPEG_OUT_PATH
  7. echo $FFMPEG_PATH
  8. FF_CONFIG_OPTIONS="
  9. --disable-gpl
  10. --disable-nonfree
  11. --disable-runtime-cpudetect
  12. --disable-gray
  13. --disable-swscale-alpha
  14. --disable-ffmpeg
  15. --disable-ffplay
  16. --disable-ffprobe
  17. --disable-doc
  18. --disable-htmlpages
  19. --disable-manpages
  20. --disable-podpages
  21. --disable-lzma
  22. --disable-asm
  23. --disable-programs
  24. --disable-doc
  25. --disable-debug
  26. --disable-pixelutils
  27. --disable-avdevice
  28. --disable-avfilter
  29. --disable-avresample
  30. --disable-postproc
  31. --disable-devices
  32. --disable-bsfs
  33. --disable-iconv
  34. --disable-xlib
  35. --disable-zlib
  36. --disable-cuvid
  37. --disable-cuda
  38. --disable-libxcb
  39. --disable-libxcb_shape
  40. --disable-libxcb_shm
  41. --disable-libxcb_xfixes
  42. --disable-sdl2
  43. --disable-hwaccels
  44. --disable-muxers
  45. --disable-demuxers
  46. --disable-parsers
  47. --disable-protocols
  48. --disable-bzlib
  49. --disable-vaapi
  50. --disable-vdpau
  51. --disable-dwt
  52. --disable-lsp
  53. --disable-lzo
  54. --disable-faan
  55. --disable-encoders
  56. --disable-decoders
  57. --enable-network
  58. --enable-protocol=file,http,https,tcp,httpproxy,rtmp,rtp
  59. --enable-demuxer=hls,flv,live_flv,mp3,aac,ape,flac,ogg,wav,mov,mpegts,rtmp,rtsp,sdp,rtp
  60. --enable-muxer=mp4,h264,mp3
  61. --enable-parser=h263,mpeg4video,vp8,vp9,mp3,h264
  62. --enable-parser=mpegaudio,aac,aac_latm
  63. --enable-decoder=h263,h264,mpeg2video,mpeg4,vp8,vp9
  64. --enable-decoder=mp3,mp3float,aac,aac_latm,ape,flac,vorbis,opus
  65. --enable-encoder=aac,aac_latm,opus
  66. --enable-encoder=mpeg4,h263,mp3
  67. --enable-openssl
  68. "
  69. FF_CONFIG_OPTIONS=`echo $FF_CONFIG_OPTIONS`
  70. ${FFMPEG_PATH}/configure ${FF_CONFIG_OPTIONS}
  71. sed -i 's/HAVE_SYSCTL 1/HAVE_SYSCTL 0/g' ijkffmpeg_config.h
  72. sed -i 's/HAVE_SYSCTL=yes/!HAVE_SYSCTL=yes/g' ./ijkffmpeg_ffbuild/config.mak
  73. sed -i 's/HAVE_GLOB 1/HAVE_GLOB 0/g' ijkffmpeg_config.h
  74. sed -i 's/HAVE_GLOB=yes/!HAVE_GLOB=yes/g' ijkffmpeg_config.h
  75. sed -i 's/HAVE_GMTIME_R 1/HAVE_GMTIME_R 0/g' ijkffmpeg_config.h
  76. sed -i 's/HAVE_LOCALTIME_R 1/HAVE_LOCALTIME_R 0/g' ijkffmpeg_config.h
  77. sed -i 's/HAVE_PTHREAD_CANCEL 1/HAVE_PTHREAD_CANCEL 0/g' ijkffmpeg_config.h
  78. sed -i 's/HAVE_VALGRIND_VALGRIND_H 1/HAVE_VALGRIND_VALGRIND_H 0/g' ijkffmpeg_config.h
  79. tmp_file=".ijkffmpeg_tmpfile"
  80. ## remove invalid restrict define
  81. sed 's/#define av_restrict restrict/#define av_restrict/' ./ijkffmpeg_config.h >$tmp_file
  82. mv $tmp_file ./ijkffmpeg_config.h
  83. ## replace original FFMPEG_CONFIGURATION define with $FF_CONFIG_OPTIONS
  84. sed '/^#define FFMPEG_CONFIGURATION/d' ./ijkffmpeg_config.h >$tmp_file
  85. mv $tmp_file ./ijkffmpeg_config.h
  86. total_line=`wc -l ./ijkffmpeg_config.h | cut -d' ' -f 1`
  87. tail_line=`expr $total_line - 3`
  88. head -3 ijkffmpeg_config.h > $tmp_file
  89. echo "#define FFMPEG_CONFIGURATION \"${FF_CONFIG_OPTIONS}\"" >> $tmp_file
  90. tail -$tail_line ijkffmpeg_config.h >> $tmp_file
  91. mv $tmp_file ./ijkffmpeg_config.h
  92. rm -f config.err
  93. ## rm BUILD_ROOT information
  94. sed '/^BUILD_ROOT=/d' ./ijkffmpeg_ffbuild/config.mak > $tmp_file
  95. rm -f ./ijkffmpeg_ffbuild/config.mak
  96. mv $tmp_file ./ijkffmpeg_ffbuild/config.mak
  97. ## rm amr-eabi-gcc
  98. sed '/^CC=arm-eabi-gcc/d' ./ijkffmpeg_ffbuild/config.mak > $tmp_file
  99. rm -f ./ijkffmpeg_ffbuild/config.mak
  100. mv $tmp_file ./ijkffmpeg_ffbuild/config.mak
  101. ## rm amr-eabi-gcc
  102. sed '/^AS=arm-eabi-gcc/d' ./ijkffmpeg_ffbuild/config.mak > $tmp_file
  103. rm -f ./ijkffmpeg_ffbuild/config.mak
  104. mv $tmp_file ./ijkffmpeg_ffbuild/config.mak
  105. ## rm amr-eabi-gcc
  106. sed '/^LD=arm-eabi-gcc/d' ./ijkffmpeg_ffbuild/config.mak > $tmp_file
  107. rm -f ./ijkffmpeg_ffbuild/config.mak
  108. mv $tmp_file ./ijkffmpeg_ffbuild/config.mak
  109. ## rm amr-eabi-gcc
  110. sed '/^DEPCC=arm-eabi-gcc/d' ./ijkffmpeg_ffbuild/config.mak > $tmp_file
  111. rm -f ./ijkffmpeg_ffbuild/config.mak
  112. mv $tmp_file ./ijkffmpeg_ffbuild/config.mak
  113. sed -i 's/restrict restrict/restrict /g' ijkffmpeg_config.h
  114. sed -i '/getenv(x)/d' ijkffmpeg_config.h
  115. sed -i 's/HAVE_DOS_PATHS 0/HAVE_DOS_PATHS 1/g' ijkffmpeg_config.h
  116. mv ijkffmpeg_config.h ${FFMPEG_OUT_PATH}/config.h
  117. mv ./ijkffmpeg_ffbuild/config.mak ${FFMPEG_OUT_PATH}/config.mak
  118. mv -f libavcodec_ijk ${FFMPEG_OUT_PATH}
  119. mv -f libavformat_ijk ${FFMPEG_OUT_PATH}
  120. mv -f libavutil_ijk ${FFMPEG_OUT_PATH}
  121. mv -f libavdevice_ijk ${FFMPEG_OUT_PATH}
  122. mv -f libavfilter_ijk ${FFMPEG_OUT_PATH}
  123. cd ${FFMPEG_OUT_PATH}
  124. mv libavcodec_ijk libavcodec
  125. mv libavformat_ijk libavformat
  126. mv libavutil_ijk libavutil
  127. mv libavdevice_ijk libavdevice
  128. mv libavfilter_ijk libavfilter
  129. #rm -rf ./ffbuild
  130. echo "***编译FFmpeg准备结束***"
  131. # other work need to be done manually
  132. cat <<!EOF
  133. #####################################################
  134. ****NOTICE****
  135. You need to modify the file config.mak and delete
  136. all full path string in macro:
  137. SRC_PATH, SRC_PATH_BARE, BUILD_ROOT, LDFLAGS.
  138. Please refer to the old version of config.mak to
  139. check how to modify it.
  140. #####################################################
  141. !EOF