26
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ffmpegAdvent Calendar 2014

Day 7

AndroidアプリにFFmpegを組み込んで、動画にウォーターマークを追加する

Posted at

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 のダウンロードとインストールとテスト実行

ダウンロードしたファイルを解凍(ここでは/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にインポート

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が出力されていれば成功です。

26
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?