• ffmpeg在fedora上的静态编译实战——筑梦之路


    相关资料:

    ffmpeg 纯静态编译,以及添加自定义库流程摘要-阿里云开发者社区

    静态编译ffmpeg - JavaShuo

    1. #!/bin/bash
    2. set -e
    3. current_dir=$(cd ../; pwd -P)
    4. build_dir="${current_dir}/_build"
    5. release_dir="${current_dir}/_release"
    6. echo "start to build the tools for transcode system(current_dir: ${current_dir}, build_dir: ${build_dir}, release_dir: ${release_dir})..."
    7. mkdir -p ${build_dir}
    8. mkdir -p ${release_dir}
    9. cp -rf yasm-1.3.0.tar.gz fdk-aac-0.1.4.tar.gz faac-1.28.tar.bz2 lame-3.98.4.tar.gz opencore-amr-0.1.2.tar.gz x264-snapshot-20140803-2245.tar.bz2 x265_1.9.tar.gz ${build_dir}
    10. cp -rf libxml2-2.9.4.tar.gz libpng-1.6.24.tar.xz freetype-2.7.tar.bz2 fribidi-0.19.7.tar.bz2 fontconfig-2.12.1.tar.bz2 libass-0.13.2.tar.gz ffmpeg-3.0.1.tar.bz2 ${build_dir}
    11. cp -rf zlib-1.2.8.tar.gz bzip2-1.0.6.tar.gz libevent-2.0.22-stable.tar.gz xz-5.2.2.tar.gz numactl_2.0.8.orig.tar.gz ${build_dir}
    12. export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:${release_dir}/lib/pkgconfig
    13. export PATH=${PATH}:${release_dir}/bin
    14. # libaacplus not support in ffmpeg3.0.1
    15. # yasm
    16. pushd ${build_dir}
    17. if ! [ -e "yasm" ]
    18. then
    19. echo "########## yasm begin ##########"
    20. if ! [ -e "yasm-1.3.0.tar.gz" ]
    21. then
    22. # download yasm
    23. echo "########## to download yasm ##########"
    24. wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
    25. fi
    26. tar xf yasm-1.3.0.tar.gz
    27. pushd yasm-1.3.0
    28. ./configure --prefix=${release_dir}
    29. make
    30. make install
    31. popd
    32. touch yasm
    33. echo "########## yasm ok ##########"
    34. else
    35. echo "########## yasm has been installed ##########"
    36. fi
    37. popd
    38. # libevent
    39. pushd ${build_dir}
    40. if ! [ -e "libevent" ]
    41. then
    42. echo "########## libevent begin ##########"
    43. tar xf libevent-2.0.22-stable.tar.gz
    44. pushd libevent-2.0.22-stable
    45. ./configure --prefix=${release_dir} --enable-static=yes --enable-shared=no
    46. make
    47. make install
    48. popd
    49. touch libevent
    50. echo "########## libevent ok ##########"
    51. else
    52. echo "########## libevent has been installed ##########"
    53. fi
    54. popd
    55. # libz
    56. pushd ${build_dir}
    57. if ! [ -e "zlib" ]
    58. then
    59. echo "########## zlib begin ##########"
    60. # wget http://zlib.net/zlib-1.2.8.tar.gz
    61. tar xf zlib-1.2.8.tar.gz
    62. pushd zlib-1.2.8
    63. ./configure --prefix=${release_dir} --static
    64. make
    65. make install
    66. popd
    67. touch zlib
    68. echo "########## zlib ok ##########"
    69. else
    70. echo "########## zlib has been installed ##########"
    71. fi
    72. popd
    73. # libbz2
    74. pushd ${build_dir}
    75. if ! [ -e "libbz2" ]
    76. then
    77. echo "########## libbz2 begin ##########"
    78. # wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
    79. tar xf bzip2-1.0.6.tar.gz
    80. pushd bzip2-1.0.6
    81. make PREFIX=${release_dir}
    82. make PREFIX=${release_dir} install
    83. popd
    84. touch libbz2
    85. echo "########## libbz2 ok ##########"
    86. else
    87. echo "########## libbz2 has been installed ##########"
    88. fi
    89. popd
    90. # fdk-aac
    91. pushd ${build_dir}
    92. if ! [ -e "fdk-aac" ]
    93. then
    94. echo "########## fdk-aac begin ##########"
    95. tar xf fdk-aac-0.1.4.tar.gz
    96. pushd fdk-aac-0.1.4
    97. ./autogen.sh
    98. ./configure --prefix=${release_dir}
    99. make
    100. make install
    101. popd
    102. touch fdk-aac
    103. echo "########## fdk-aac ok ##########"
    104. else
    105. echo "########## fdk-aac has been installed ##########"
    106. fi
    107. popd
    108. # libfaac
    109. pushd ${build_dir}
    110. if ! [ -e "faac" ]
    111. then
    112. echo "########## libfaac begin ##########"
    113. tar xf faac-1.28.tar.bz2
    114. pushd faac-1.28
    115. ./configure --prefix=${release_dir} --enable-static --without-mp4v2
    116. make
    117. make install
    118. popd
    119. touch faac
    120. echo "########## libfaac ok ##########"
    121. else
    122. echo "########## libfaac has been installed ##########"
    123. fi
    124. popd
    125. # libmp3lame
    126. pushd ${build_dir}
    127. if ! [ -e "mp3lame" ]
    128. then
    129. echo "########## libmp3lame begin ##########"
    130. tar xf lame-3.98.4.tar.gz
    131. pushd lame-3.98.4
    132. ./configure --prefix=${release_dir} --enable-static
    133. make
    134. make install
    135. popd
    136. touch mp3lame
    137. echo "########## libmp3lame ok ##########"
    138. else
    139. echo "########## libmp3lame has been installed ##########"
    140. fi
    141. popd
    142. # libopencore_amrnb
    143. pushd ${build_dir}
    144. if ! [ -e "opencore_amrnb" ]
    145. then
    146. echo "########## libopencore_amrnb begin ##########"
    147. tar xf opencore-amr-0.1.2.tar.gz
    148. pushd opencore-amr-0.1.2
    149. ./configure --prefix=${release_dir} --enable-static
    150. make
    151. make install
    152. popd
    153. touch opencore_amrnb
    154. echo "########## libopencore_amrnb ok ##########"
    155. else
    156. echo "########## libopencore_amrnb has been installed ##########"
    157. fi
    158. popd
    159. # libx264
    160. pushd ${build_dir}
    161. if ! [ -e "x264" ]
    162. then
    163. echo "########## libx264 begin ##########"
    164. tar xf x264-snapshot-20140803-2245.tar.bz2
    165. pushd x264-snapshot-20140803-2245
    166. ./configure --prefix=${release_dir} --enable-static --disable-opencl
    167. sed -i -e 's/-s //' -e 's/-s$//' config.mak
    168. make
    169. make install
    170. popd
    171. touch x264
    172. echo "########## libx264 ok ##########"
    173. else
    174. echo "########## libx264 has been installed ##########"
    175. fi
    176. popd
    177. # libnuma (for x265)
    178. pushd ${build_dir}
    179. if ! [ -e "numa" ]
    180. then
    181. if ! [ -e "numactl_2.0.8.orig.tar.gz" ]
    182. then
    183. # download yasm
    184. echo "########## to download numa ##########"
    185. wget http://numactl.sourcearchive.com/downloads/2.0.8/numactl_2.0.8.orig.tar.gz
    186. fi
    187. tar xf numactl_2.0.8.orig.tar.gz
    188. pushd numactl-2.0.8
    189. make PREFIX=${release_dir}
    190. make PREFIX=${release_dir} install
    191. rm -rf ${release_dir}/lib64/libnuma.so*
    192. popd
    193. touch numa
    194. echo "########## numa ok ##########"
    195. else
    196. echo "########## numa has been built ##########"
    197. fi
    198. popd
    199. # libx265
    200. pushd ${build_dir}
    201. if ! [ -e "x265" ]
    202. then
    203. echo "########## libx265 begin ##########"
    204. # download page: https://bitbucket.org/multicoreware/x265/downloads
    205. tar xf x265_1.9.tar.gz
    206. pushd x265_1.9
    207. cmake ./source -DCMAKE_INSTALL_PREFIX=${release_dir} -DBUILD_SHARED_LIBS=OFF
    208. make
    209. make install
    210. popd
    211. touch x265
    212. echo "########## libx265 ok ##########"
    213. else
    214. echo "########## libx265 has been installed ##########"
    215. fi
    216. popd
    217. # lzma (requried by ffmpeg drawtext)
    218. pushd ${build_dir}
    219. if ! [ -e "lzma" ]
    220. then
    221. echo "########## lzma begin ##########"
    222. tar xf xz-5.2.2.tar.gz
    223. pushd xz-5.2.2
    224. ./configure --prefix=${release_dir} --enable-static=yes --enable-shared=no
    225. make
    226. make install
    227. popd
    228. touch lzma
    229. echo "########## lzma ok ##########"
    230. else
    231. echo "########## lzma has been installed ##########"
    232. fi
    233. popd
    234. # libpng (requried by freetype)
    235. pushd ${build_dir}
    236. if ! [ -e "libpng" ]
    237. then
    238. echo "########## libpng begin ##########"
    239. echo "remove all so to force the ffmpeg to build in static"
    240. rm -f ${release_dir}/lib/*.so*
    241. tar xf libpng-1.6.24.tar.xz
    242. pushd libpng-1.6.24
    243. ./configure --prefix=${release_dir} --enable-static=yes --enable-shared=no
    244. make
    245. make install
    246. popd
    247. touch libpng
    248. echo "########## libpng ok ##########"
    249. else
    250. echo "########## libpng has been installed ##########"
    251. fi
    252. popd
    253. # libxml2 (requried by fontconfig)
    254. pushd ${build_dir}
    255. if ! [ -e "libxml2" ]
    256. then
    257. echo "########## libxml2 begin ##########"
    258. echo "remove all so to force the ffmpeg to build in static"
    259. rm -f ${release_dir}/lib/*.so*
    260. tar xf libxml2-2.9.4.tar.gz
    261. pushd libxml2-2.9.4
    262. ./configure --prefix=${release_dir} --enable-static=yes --enable-shared=no
    263. make
    264. make install
    265. popd
    266. touch libxml2
    267. echo "########## libxml2 ok ##########"
    268. else
    269. echo "########## libxml2 has been installed ##########"
    270. fi
    271. popd
    272. # freetype (requried by libass)
    273. pushd ${build_dir}
    274. if ! [ -e "freetype" ]
    275. then
    276. echo "########## freetype begin ##########"
    277. echo "remove all so to force the ffmpeg to build in static"
    278. rm -f ${release_dir}/lib/*.so*
    279. # wget http://downloads.sourceforge.net/freetype/freetype-2.7.tar.bz2
    280. tar xf freetype-2.7.tar.bz2
    281. pushd freetype-2.7
    282. ./configure --prefix=${release_dir} --enable-static=yes --enable-shared=no
    283. make
    284. make install
    285. popd
    286. touch freetype
    287. echo "########## freetype ok ##########"
    288. else
    289. echo "########## freetype has been installed ##########"
    290. fi
    291. popd
    292. # fribidi (requried by libass)
    293. pushd ${build_dir}
    294. if ! [ -e "fribidi" ]
    295. then
    296. echo "########## fribidi begin ##########"
    297. echo "remove all so to force the ffmpeg to build in static"
    298. rm -f ${release_dir}/lib/*.so*
    299. tar xf fribidi-0.19.7.tar.bz2
    300. pushd fribidi-0.19.7
    301. ./configure --prefix=${release_dir} --enable-static=yes --enable-shared=no
    302. make
    303. make install
    304. popd
    305. touch fribidi
    306. echo "########## fribidi ok ##########"
    307. else
    308. echo "########## fribidi has been installed ##########"
    309. fi
    310. popd
    311. # fontconfig (requried by libass)
    312. pushd ${build_dir}
    313. if ! [ -e "fontconfig" ]
    314. then
    315. echo "########## fontconfig begin ##########"
    316. echo "remove all so to force the ffmpeg to build in static"
    317. rm -f ${release_dir}/lib/*.so*
    318. tar xf fontconfig-2.12.1.tar.bz2
    319. pushd fontconfig-2.12.1
    320. ./configure --prefix=${release_dir} --enable-static=yes --enable-shared=no --enable-libxml2
    321. make
    322. make install
    323. popd
    324. touch fontconfig
    325. echo "########## fontconfig ok ##########"
    326. else
    327. echo "########## fontconfig has been installed ##########"
    328. fi
    329. popd
    330. # libass
    331. pushd ${build_dir}
    332. if ! [ -e "libass" ]
    333. then
    334. echo "########## libass begin ##########"
    335. echo "remove all so to force the ffmpeg to build in static"
    336. rm -f ${release_dir}/lib/*.so*
    337. tar xf libass-0.13.2.tar.gz
    338. pushd libass-0.13.2
    339. ./configure --prefix=${release_dir} --enable-static=yes --enable-shared=no
    340. make
    341. make install
    342. popd
    343. touch libass
    344. echo "########## libass ok ##########"
    345. else
    346. echo "########## libass has been installed ##########"
    347. fi
    348. popd
    349. # ffmpeg
    350. pushd ${build_dir}
    351. if ! [ -e "ffmpeg3.0.1" ]
    352. then
    353. echo "########## ffmepg begin ##########"
    354. set -x
    355. if ! [ -d "ffmpeg-3.0.1" ]
    356. then
    357. tar xf ffmpeg-3.0.1.tar.bz2
    358. fi
    359. echo "remove all so to force the ffmpeg to build in static"
    360. rm -f ${release_dir}/lib/*.so*
    361. pushd ffmpeg-3.0.1
    362. export ffmpeg_exported_release_dir=${release_dir}
    363. echo ${ffmpeg_exported_release_dir}/include
    364. echo ${ffmpeg_exported_release_dir}/lib
    365. ./configure --prefix=${release_dir} --cc=$CC \
    366. --extra-cflags="-I${release_dir}/include -I${release_dir}/include/hiredis" \
    367. --extra-ldflags="-L${release_dir}/lib -L${release_dir}/lib64 -ldl -lm -lpthread -lrt -lstdc++ -static" \
    368. --pkg-config-flags="--static" \
    369. --enable-gpl --enable-static --enable-nonfree --enable-version3 --disable-ffplay --disable-ffserver \
    370. --enable-postproc \
    371. --enable-demuxer=oss \
    372. --disable-vaapi --disable-indev=alsa --disable-outdev=alsa \
    373. --enable-libopencore-amrnb --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libfaac --enable-libfdk-aac \
    374. --enable-libass --enable-libfreetype --enable-libfontconfig --enable-libfribidi \
    375. --extra-libs=-lhiredis --extra-libs=-lnuma --extra-libs=-levent
    376. #--extra-libs=-lstdc++ --extra-libs=-lc
    377. echo "ffmpeg3.0.1 begin make"
    378. make
    379. make install
    380. popd
    381. #touch ffmpeg3.0.1
    382. echo "########## ffmpeg3.0.1 ok ##########"
    383. else
    384. echo "########## ffmpeg3.0.1 has been installed ##########"
    385. fi
    386. popd

    待完善。。。。

  • 相关阅读:
    MySQL备份及恢复
    Linux 基本指令大全。(万字详解)
    【全志T113-S3_100ask】2-编写第一个驱动
    单元测试实战(三)JPA 的测试
    第10章 RDB持久化
    《向量数据库指南》——AI原生向量数据库Milvus Cloud 2.3架构升级
    MyBatisPlus(八)范围查询
    【Ubuntu20.04+gcc-9.4.0】Openface在linux下的详细环境配置(2024.4月)
    人体呼吸存在传感器成品,毫米波雷达探测感知技术,引领智能家居新潮流
    云主机生成和绑定密钥
  • 原文地址:https://blog.csdn.net/qq_34777982/article/details/127904159