Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

build and include freetype2 by default to enable the 'drawtext' filter

* ffmpeg's ./configure requires the use of pkg-config for detecting if
  external libraries are present. Since we're not installing these
  cross-compiled versions, we need to make a fake pkg-config to trick
  ffmpeg's ./configure.
commit f08db49e613a7ea4423effb22973e3f1afefb819 1 parent 4b4b4f6
@eighthave eighthave authored
View
14 README.txt
@@ -8,7 +8,7 @@ setup
-----
1. Install the Android NDK r8 or newer
- 2. On Debian/Ubuntu, run: apt-get install yasm bash patch make
+ 2. On Debian/Ubuntu, run: apt-get install yasm bash patch make gawk
building
@@ -73,3 +73,15 @@ testing
-acodec copy \
-vcodec libx264 -b:v 1000k -an -f mp4 \
-y /tmp/output.mp4
+
+# drawtext test
+./ffmpeg \
+ -i test.mp4 \
+ -fflags +genpts -t 600 -r 8 -s 640x480 \
+ -vf drawtext="fontfile=DejaVuSans.ttf:x=70:y=455: \
+text='\%H\:\%M\:\%S | \%a \%d/\%b/\%Y | S500ATV | camera 0': \
+fontcolor=0xFFFFFFFF:fontsize=18: \
+shadowcolor=0x000000EE:shadowx=1:shadowy=1" \
+ -b:v 1500000 -r 8 \
+ -acodec copy \
+ -y video_file.mp4
View
4 clean.sh
@@ -8,6 +8,10 @@ pushd x264
make clean
popd
+pushd freetype2
+make clean
+
+popd
pushd ffmpeg
make clean
View
3  configure_ffmpeg.sh
@@ -17,6 +17,8 @@ patch -d ffmpeg -N -p1 --reject-file=- < \
ARM_generate_position_independent_code_to_access_data_symbols.patch
patch -d ffmpeg -N -p1 --reject-file=- < \
ARM_intmath_use_native-size_return_types_for_clipping_functions.patch
+patch -d ffmpeg -N -p1 --reject-file=- < \
+ enable-fake-pkg-config.patch
pushd ffmpeg
@@ -98,6 +100,7 @@ $DEBUG_FLAG \
\
--enable-filters \
--enable-avresample \
+--enable-libfreetype \
\
--disable-indevs \
--enable-indev=lavfi \
View
2  configure_freetype2.sh
@@ -9,9 +9,11 @@ pushd freetype2
./configure \
CC="$CC" \
LD="$LD" \
+ CFLAGS="-std=gnu99 -mcpu=cortex-a8 -marm -mfloat-abi=softfp -mfpu=neon" \
--host=$HOST \
--with-sysroot="$NDK_SYSROOT" \
--enable-static \
+ --disable-shared \
--without-bzip2
popd;popd
View
2  configure_make_everything.sh
@@ -7,5 +7,7 @@ function die {
./clean.sh
./configure_x264.sh || die "X264 configure"
./make_x264.sh || die "X264 make"
+./configure_freetype2.sh || die "freetype2 configure"
+./make_freetype2.sh || die "freetype2 make"
./configure_ffmpeg.sh || die "FFMPEG configure"
./make_ffmpeg.sh || die "FFMPEG make"
View
16 enable-fake-pkg-config.patch
@@ -0,0 +1,16 @@
+diff --git a/configure b/configure
+index 4e1a611..34c6d27 100755
+--- a/configure
++++ b/configure
+@@ -2106,6 +2106,11 @@ set_default cc cxx nm pkg_config strip sysinclude yasmexe
+ enabled cross_compile || host_cc_default=$cc
+ set_default host_cc
+
++# hack because the Android NDK does not provide pkg-config, and ffmpeg
++# requires pkg-config for configuring when building against external
++# libraries.
++pkg_config=../fake-pkg-config
++
+ if ! $pkg_config --version >/dev/null 2>&1; then
+ warn "$pkg_config not found, library detection may fail."
+ pkg_config=false
View
24 fake-pkg-config
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# this is a fake pkg-config since ffmpeg requires pkg-config if you want to
+# include external libraries like libfreetype or libass. The Android NDK does
+# not provide any kind of pkg-config.
+
+case $1 in
+ --exists)
+ if [ $2 = "freetype2" ]; then
+ return 0
+ else
+ return 1
+ fi
+ ;;
+ --cflags)
+ echo "-I../freetype2/include"
+ ;;
+ --libs)
+ echo "-L../freetype2/objs/.libs -lfreetype"
+ ;;
+ *)
+ echo "fake pkg-config for Android NDK build!"
+ ;;
+esac
View
6 make_freetype2.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+pushd `dirname $0`
+. settings.sh
+pushd freetype2
+make -j4
+popd;popd
Please sign in to comment.
Something went wrong with that request. Please try again.