install-ffmpeg.sh 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #!/bin/bash
  2. #ubuntu: 14.04+
  3. #
  4. #install required things from apt
  5. installLibs() {
  6. echo "Installing prerequisites"
  7. sudo apt-get update
  8. sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev \
  9. libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \
  10. libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev
  11. }
  12. #Compile nasm
  13. compileNasm() {
  14. echo "Compiling nasm"
  15. cd ~/ffmpeg_sources
  16. wget http://www.nasm.us/pub/nasm/releasebuilds/2.14rc0/nasm-2.14rc0.tar.gz
  17. tar xzvf nasm-2.14rc0.tar.gz
  18. cd nasm-2.14rc0
  19. ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
  20. make -j$(nproc)
  21. make -j$(nproc) install
  22. make -j$(nproc) distclean
  23. }
  24. #Compile libx264
  25. compileLibX264() {
  26. echo "Compiling libx264"
  27. cd ~/ffmpeg_sources
  28. wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
  29. tar xjvf last_x264.tar.bz2
  30. cd x264-snapshot*
  31. PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
  32. PATH="$HOME/bin:$PATH" make -j$(nproc)
  33. make -j$(nproc) install
  34. make -j$(nproc) distclean
  35. }
  36. #Compile libfdk-acc
  37. compileLibfdkcc() {
  38. echo "Compiling libfdk-cc"
  39. sudo apt-get install unzip
  40. cd ~/ffmpeg_sources
  41. wget -O fdk-aac.zip https://github.com/mstorsjo/fdk-aac/zipball/master
  42. unzip fdk-aac.zip
  43. cd mstorsjo-fdk-aac*
  44. autoreconf -fiv
  45. ./configure --prefix="$HOME/ffmpeg_build" --disable-shared
  46. make -j$(nproc)
  47. make -j$(nproc) install
  48. make -j$(nproc) distclean
  49. }
  50. #Compile libmp3lame
  51. compileLibMP3Lame() {
  52. echo "Compiling libmp3lame"
  53. sudo apt-get install nasm
  54. cd ~/ffmpeg_sources
  55. wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
  56. tar xzvf lame-3.99.5.tar.gz
  57. cd lame-3.99.5
  58. ./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-shared
  59. make -j$(nproc)
  60. make -j$(nproc) install
  61. make -j$(nproc) distclean
  62. }
  63. #Compile libopus
  64. compileLibOpus() {
  65. echo "Compiling libopus"
  66. cd ~/ffmpeg_sources
  67. wget http://downloads.xiph.org/releases/opus/opus-1.2.1.tar.gz
  68. tar xzvf opus-1.2.1.tar.gz
  69. cd opus-1.2.1
  70. ./configure --prefix="$HOME/ffmpeg_build" --disable-shared
  71. make -j$(nproc)
  72. make -j$(nproc) install
  73. make -j$(nproc) distclean
  74. }
  75. #Compile libvpx
  76. compileLibPvx() {
  77. echo "Compiling libvpx"
  78. cd ~/ffmpeg_sources
  79. git clone https://chromium.googlesource.com/webm/libvpx
  80. cd libvpx
  81. PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --enable-runtime-cpu-detect --enable-vp9 --enable-vp8 \
  82. --enable-postproc --enable-vp9-postproc --enable-multi-res-encoding --enable-webm-io --enable-better-hw-compatibility --enable-vp9-highbitdepth --enable-onthefly-bitpacking --enable-realtime-only \
  83. --cpu=native --as=nasm
  84. PATH="$HOME/bin:$PATH" make -j$(nproc)
  85. make -j$(nproc) install
  86. make -j$(nproc) clean
  87. }
  88. #Compile ffmpeg
  89. compileFfmpeg() {
  90. echo "Compiling ffmpeg"
  91. cd ~/ffmpeg_sources
  92. git clone https://github.com/FFmpeg/FFmpeg -b master
  93. cd FFmpeg
  94. PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  95. --prefix="$HOME/ffmpeg_build" \
  96. --extra-cflags="-I$HOME/ffmpeg_build/include" \
  97. --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  98. --bindir="$HOME/bin" \
  99. --enable-cuvid \
  100. --enable-libnpp \
  101. --enable-gpl \
  102. --enable-libass \
  103. --enable-libfdk-aac \
  104. --enable-vaapi \
  105. --enable-libfreetype \
  106. --enable-libmp3lame \
  107. --enable-libopus \
  108. --enable-libtheora \
  109. --enable-libvorbis \
  110. --enable-libvpx \
  111. --enable-libx264 \
  112. --enable-libx265 \
  113. --enable-nonfree \
  114. --enable-lv2 \
  115. --samples=fate-suite/
  116. PATH="$HOME/bin:$PATH" make -j$(nproc)
  117. make -j$(nproc) install
  118. make -j$(nproc) distclean
  119. hash -r
  120. }
  121. #The process
  122. cd ~
  123. mkdir ffmpeg_sources
  124. installLibs
  125. compileNasm
  126. compileLibX264
  127. compileLibfdkcc
  128. compileLibMP3Lame
  129. compileLibOpus
  130. compileLibPvx
  131. compileFfmpeg
  132. echo "Complete!"