ffmpeg Advent Calendar 2014 7日目です。
初投稿ですが、よろしくお願いします。
NDKビルド環境は
Windows7 Professional 64bit
VMware Player 6.0.3
Ubuntu 12.04 64bit
Eclipse Kepler Service Release 2
Android NDK Revision 10c
です
#事前準備
FFmpegでウォーターマークを追加する動画(mp4)と画像ファイル(png)
#NDKビルド環境構築
###VMwarePlayerとUbuntu 12.04(64bit)インストール
VMware PlayerをWindows7にインストールする
###OpenJDK 6,7インストール
How to download and install prebuilt OpenJDK packages:OpenJDK公式
sudo apt-get -yV install openjdk-7-jre
sudo apt-get -yV install openjdk-6-jre
###OpenJDKを使うように設定
sudo update-java-alternatives --jre -s `sudo update-java-alternatives -l | grep 1.7.0 | awk '{print $1}'`
sudo update-java-alternatives --jre-headless -s `sudo update-java-alternatives -l | grep 1.7.0 | awk '{print $1}'`
sudo update-java-alternatives -s `sudo update-java-alternatives -l | grep 1.7.0 | awk '{print $1}'`
###設定の確認とJAVA_HOME設定
Ubuntu で Android NDK を使ってみる
- 次のコマンドを実行し、/usr/lib/jvm/java-7-openjdk-amd64...の行に設定されていることを確認
sudo update-alternatives --config java
- javaのバージョン確認
update-java-alternatives -l
java -version
- 環境変数 JAVA_HOME の設定(~/.bashrc の設定例)
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=/usr/lib/jvm/java-7-openjdk-amd64/jre/bin:$PATH
export CLASSPATH=.:/usr/lib/jvm/java-7-openjdk-amd64/lib
###Android SDKインストール
Ubuntu 12.04 で Android SDK のダウンロードとインストールとテスト実行
- Android公式サイトからSDK Tools OnlyのLinux 32 & 64-bitをダウンロード
ダウンロードしたファイルを解凍(ここでは/usr/localを指定)
cd /usr/local
sudo tar -xvzof /tmp/android-sdk_r23.0.2-linux.tgz
- ファイルの所有者の変更
sudo chown -R <ユーザ名> /usr/local/android-sdk-linux
- AVD Manager の起動
Android SDK Platform-tools と Android 2.3.3 をインストールする
cd /usr/local
cd android-sdk-linux
sudo ./tools/android
- 環境変数の設定(~/.bashrc の設定例)
export PATH=$PATH:/usr/local/android-sdk-linux/tools:/usr/local/android-sdk-linux/platform-tools
###Eclipseと各種プラグイン、Pleiades(日本語化プラグイン)のインストール
sudo apt-get -yV install eclipse
sudo apt-get -yV install eclipse-cdt
sudo apt-get -yV install eclipse-jdt
sudo apt-get -yV install eclipse-sdk
sudo apt-get -yV install eclipse-platform
sudo apt-get -yV install eclipse-platform-data
sudo apt-get -yV install eclipse-plugin-cvs
sudo apt-get -yV install eclipse-rcp
sudo apt-get -yV install pleiades
- Pleiadesの設定を/usr/local/eclipse/eclipse.iniに追加する
-javaagent:/usr/local/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
- Eclipseを試しに起動する
eclipse
###ADTインストール
Ubuntu で Eclipst と Eclipse の ADT プラグインのダウンロードとインストールの
「Eclipse ADT (Eclipse のプラグイン Android Development Tools) のダウンロードとインストール」
を参考に実施
###CDT(C/C++プログラミング環境)インストール
Eclipse に C/C++ 開発ツール (CDT) をインストールの
「C/C++ 開発ツール (CDT) のインストール手順 」を参考に実施
###NDKのインストール
Ubuntu で Android NDK を使ってみる を参考に実施
#FFmpegライブラリ移植
今回は、FFmpegのAndroid向けビルドパッケージhalfninja:android-ffmpeg-x264の
Forkリポジトリからm4fg:android-ffmpeg-x264をお借りしました。
###Gitインストール
sudo apt-get -yV install git-core
###Gitからm4fg:android-ffmpeg-x264をクローン
git clone https://github.com/m4fg/android-ffmpeg-x264.git --recursive
###初期設定
環境変数にNDKのパスが設定されていることを確認して実行
(例:export NDK=/usr/local/android-ndk-r10c)
cd Project/jni
./create_toolchain.sh
###プロジェクトビルド
./config_make_everything.sh
ndk-build
ビルド正常終了後、libs/armeabi/videokit.soができることを確認します。
###Eclipseにインポート
###AndroidManifest.xmlにパーミッションを追加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
###Videokit.javaを少しだけ修正
package uk.co.halfninja.videokit;
public final class Videokit {
static {
System.loadLibrary("videokit");
}
//public native void run(String[] args);
public native void run(String args);
}
###FFmepgコマンド実行
一定の時間間隔でオーバーレイ画像を表示する方法:superuser
Android端末の/mnt/sdcardに
ウォーターマークを追加する動画(sample.mp4)と画像(sample.png)を設置して、
下記のメソッドを実行します。
import uk.co.halfninja.videokit.Videokit;
Videokit videoKit = new Videokit();
String strj = new String("ffmpeg\n");
strj = strj + "-i\n/mnt/sdcard/sample.mp4\n";
strj = strj + "-i\n/mnt/sdcard/sample.png\n";
strj = strj + "-filter_complex\n[0:v][1:v]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out]\n";
strj = strj + "-map\n[out]\n";
strj = strj + "-map\n0:a\n";
strj = strj + "-codec:a\ncopy\n";
strj = strj + "/mnt/sdcard/output.mp4";
videoKit.run(strj);
/mnt/sdcardにoutput.mp4が出力されていれば成功です。