SlideShare a Scribd company logo
1 of 54
Androidと
マルチメディア
  日本Androidの会 8月定例会
法政大学 情報科学研究科 松本 達弥
自己紹介
•        松本達弥 (Twitter:@tmash06)

•   法政大学 情報科学研究科 M1

•   今までやってきたこと

    •    ゲーム向け音声・映像ミドルウェアのAndroidへの移植

    •    VoIPアプリの制作

    •    音声合成ミドルウェアの初期移植

    •    群馬県館林市センサーネットワーク実験 クライアント制作

    •    etc...
宣伝




•   5ヶ月前にAndroid NDKの本を出版しました。
今日のテーマ

  Androidの
マルチメディア機能
マルチメディア機能を使ったアプリ




 音楽プレイヤ                        映像プレイヤ




 VoIPアプリ                               録音
    引用:GooglePlay https://play.google.com/
利用出来るクラス・API
• 大体がandroid.mediaパッケージ
  • MediaPlayer    • OpenSL|ES
  • MediaRecorder • OpenMAX|AL
  • SoundPool      • Camera
  • AudioTrack     • ThumnailUtils
  • AudioRecord    • etc...
 どれを使えばいい・・・?
アジェンダ

• Androidのメディア機能について
• Low Media API
• トラブル時の対応
• まとめ
Androidで再生/録画出来る形式




 • Android Developers:
   Android Supported Media Formats
 • ここに載っている形式 + 各機種独自対応
Androidで再生/録画出来る
                    代表的な形式
コーデック            エンコーダ   デコーダ          備考


      MP3                 ⃝     8∼320kbps CBR/VBR


     Vorbis               ⃝


    H.264 AVC       ⃝※    ⃝       Baseline Profile


      VP8                 ⃝


•     ※Honeycomb(3.0)∼

•     OSバージョンによっても違う

     •   開発時にターゲットとするOSバージョンを決めることが重要
普通に音楽/映像を
      再生したい
例:音楽プレイヤ・動画プレイヤ・ゲームのBGM
MediaPlayer
•   大体のことがコレで事足りる

    •   動画プレイヤー、音楽プレイヤー、
        操作紹介ビデオの再生、etc...

•   動画・音楽対応しているものなら、
    なんでも再生可能

•   ストリーミング再生も可能

•   ただし、単純再生しか出来ない

    •   再生・停止・一時停止・・・
普通に録音/録画がしたい
  例:録音・録画アプリ
MediaRecorder
•   カメラやマイクから映像や音声を記録し、
    エンコードして保存

•   録画・録音しながら、何か効果を与えるなどは不可

    •   SEを入れる

    •   映像にポップを入れる

•   Android OS 1.0∼
短い音を低負荷/低レイテンシ
    に再生したい
   例:ゲームの効果音など
SoundPool
•   短い音の再生するときに利用

•   ゲームのSE向け

•   ロード時にデコードしておく

    •   再生時の負荷が低い

    •   レイテンシ(遅延)が少し小さい

•   メモリ使用量が多い
基本はこの3つ
•   MediaPlayer
•   MediaRecorder
•   SoundPool
•   コレを使えば、大体のアプリはなんとかなる

    •   音楽プレイヤー、録音アプリ、簡単なゲーム、etc...

•   が、ちょっと凝ったことをやろうとすると、
    コレより先に紹介するAPIが必要

    •   本格的な楽器アプリ

    •   VoIP etc...
任意のPCM波形を再生したい
 例:楽器アプリ・VoIPアプリなど
AudioTrack
•   任意のPCM波形を再生

•   2つのモード

    •   Staticモード

        •   決まった波形を何回も再生する時

    •   Steramモード

        •   その時に応じた任意の波形を再生する時

        •   バッファリングとレイテンシの管理が難しい

•   Cupcake(1.5)∼
任意のPCM波形を録音したい
例:凝った録音アプリ・VoIPアプリなど
AudioRecord
• マイクなどから入力されたPCM波形を
  取得可能

• 定期的に録音用バッファから取得しな
  いと、音が飛ぶので注意

• Cupcake(1.5)∼
ネイティブコードから
 オーディオを扱いたい
例:既存のゲーム/ミドルウェアの移植
OpenSL|ES
•   ネイティブ向けオーディオAPI

•   ネイティブコードで書かれた、
    既存のソフト・ミドルウェアを移植するときに

•   持っている機能は、
    MediaPlayer + MediaRecorder + AudioTrack + AudioRecord = 万能

•   使いづらい&資料が少ない

•   Gingerbread(2.3∼)
ネイティブからMPEG2-TS形式を
        扱いたい
例:自前DRM機能付き動画プレイヤ・ワンセグ?
OpenMAX AL
•   マルチメディアストリームを扱うAPI

•   MPEG2-TS(H.264 baseprofile + AAC)のみ対応

•   ストリームを入力する前に任意の処理が可能

    •   DRMなどに向いている

•   ネイティブコードからのみ利用可能

•   資料が少ない

•   ICS(4.0∼)
カメラを使いたい
例:カメラアプリ・AR
Camera
• カメラ機能
• 撮影する機能とプレビュー機能
• プレビュー機能は、任意のSurfaceView
 などへ出力可能

• ARなどをやるときはプレビュー機能
動画などのサムネイル
   を作りたい
例:動画プレイヤでの一覧表示
ThumbnailUtils
• サムネイルを作るときに便利な機能
• 例:動画のサムネイル画像を作成し
 て、ユーザに選択させる

• Froyo(2.2)∼
• 地味に新し目なので注意
リアルタイムに動画や
カメラプレビューにエフェクトをかけたい
       例:???
SurfaceTexture
• 動画/カメラのプレビューを,
  OpenGL|ES 2.0のテクスチャとして
  扱える

• シェーダで映像にリアルタイムにエ
  フェクトなどを与えることが出来る

• Honeycomb(3.0)∼
SurfaceTextureの応用例 その1
             ShaderMovie




•   シェーダを使ってリアルタイムに
    映像やカメラプレビューにリアルタイムにエフェクト

•   詳しくは、ABC2012 Springの私のLTを参考にしていただ
    ければ・・・
SurfaceTextureの応用例 その2
      全方位動画

        シェーダ




• 同心円状に撮影した全方位動画を
 シェーダでリアルタイムにパノラマ変換
映像/音声を編集して保存したい
  例:動画編集ソフト/DAWソフトなど
編集して保存に必要な機能

• mp4やmp3形式のファイルを開く
• フレーム単位・サンプル単位で読み込む
• 編集
• 再度圧縮して保存
Low Media API
•   JellyBeans(4.1)∼

•   低レベルなメディアAPIにアクセス可能

•   低レベル
    =今までよりも細かい高度なことが出来る
    =単純な操作に使うときは面倒くさい

•   OpenMAX ILの薄いラッパー的なイメージ

•   ネイティブ向けAPIは公開されていない
Low Media APIで出来ること
•   音声/映像のエンコード/デコード

    •   入力も出力もバイナリデータ

    •   柔軟性が高い

•   暗号化にも対応(DRM向け?)

•   端末が対応していれば、
    HWエンコード/デコード
どこに使える?
• 動画・音声編集ソフト
• 圧縮音声への自前エフェクト
• 動画の再生時刻に応じたサムネイル
• 2つの動画の同期再生
• etc...
MediaExtractor
•   マルチメディアデータ(動画・音声ファイル)の構造を解析
•   例:映像の場合以下の情報を取得出来る

    •   映像

        •   mime    : video/avc

        •   幅       : 640

        •   高さ      : 480

    •   音声

        •   コーデック           : audio/aac

        •   サンプリングレート : 44100

        •   チャンネル数          :2
MediaCodec
• 実際にエンコード/デコードする
• データをByteBufferとして入出力
 • 内部では、ネイティブのメモリー領域
  をラップしているだけ

• 音声と映像の同期などは取ってくれない
基本的な利用の流れ
• 1.MediaCodecList、MediaCodecInfoから、
 利用出来るコーデック・プロファイルを取得

• 2.MediaExtractorでデータを解析
 • エンコードの際には不要
• 3.MediaCodecでエンコード・デコード
Low Media APIの問題点

• サンプルがほとんどない
 • 特に映像を扱ったものは見つからない
• 扱うのが非常に難しい
• 対応機種が少なすぎる
音声デコード&再生
•   サンプル作りました

•   メディアフォーマットを解析→デコード→AudioTrack
    を利用して再生

•   どのコーデックが使えるかなどの情報を
    取得可能

•   今日説明すると長いので、githubにて公開

•   http://git.io/SuBQMw
映像デコード&表示
•   こちらもサンプル作りました

•   メディアフォーマットを解析→
    動画を連続したビットマップ画像として表示

•   こちらも今日説明すると長いので、
    githubにて公開

•   http://git.io/SuBQMw
音系APIの共通事項
           レイテンシ問題
•   レイテンシ(遅延)

•   再生しろ!と命令してから、実際にスピーカから
    再生されるまでの時間

•   現在は非常に大きい(機種によっては150ms∼)

    •   iOSは10ms程度

    •   楽器アプリや音ゲーを作るときに大問題

•   JellyBeans(4.1)からは、10ms∼12msぐらいに
    改善されるらしい
突然のエラー
• MediaPlayerを使って再生
• 突然エラー!
• エラーなことは教えてくれるが、理由
 までは教えてくれない

• adb logcat !(ログを見てみる)
のスタックトレース




• mediaserverというプロセスがクラッシュ
mediaserver
•   Androidのメディア機能全般を担当する
    プロセス

•   MediaPlayerなどで再生する時、実際にデコード
    などの処理をしているのはこのプロセス

•   Androidが対応していないコーデックや
    プロファイルのデータを再生しようとした時、
    クラッシュする時がある
どうやって対応するか
•   初めに疑うべきはコーデック

•   特にプロファイルについては要注意

    •   H.264はbaseprofileのみなど・・・

    •   Android Supported Media Formatsをよく読む
        (http://developer.android.com/guide/appendix/media-formats.html)


•   ひと通り調べても分からなければ、
    死んでいる部分のソースを見てみるしか無い(ただしC++)

    •   幸運?なことに、大体Assertionで死ぬので、
        特定はしやすい
Android OSソースの
                ダウンロード
•   時間の都合上省略します

•   OSのビルドは大変だが、ソースコードの
    ダウンロードだけなら、そこまで大変ではない

•   もしくは、ソースコード検索サービスを利用する

    •   「Androidソースコード検索サービス」
        http://tools.oesf.biz/android-4.1.1_r1.0/
libstagefright
• mediaserverが利用しているライブラリ
 のひとつ

 • コンテナの解析
 • エンコード・デコード
• ここが原因の時が多い
MediaExtractor
• ファイルフォーマットなどを解析する
• ファイルが壊れていたり、不正な形式
 だったりすると、ここでクラッシュ

• 比較的読みやすいコードなので、原因
 特定は簡単に出来る
その他
•   StagefrightPlayer
•   AwesomePlayer
•   OpenMAX関連

•   etc...


•   今回は時間がないので省略します。

•   この辺りでクラッシュするときは、コーデックの
    プロファイルが怪しい
まとめ
•   やりたいことに合わせたメディアAPI利用しよう

•   トラブルが起きたときは、mediaserverの
    コードを参考にすると解決のヒントになるかもしれない

•   Low Media APIは、Androidのマルチメディア機能を一つ上のレベ
    ルに上げる

    •   が、まだ本気で使うのは早い?

•   今回は紹介しませんでしたが、ffmpegというライブラリを利用
    する方法もある(難易度は高)
ありがとうございました
github : http://git.io/SuBQMw

More Related Content

What's hot

Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化COLOPL, Inc.
 
ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法Nohina Hidenari
 
SIG-Audio準備会#2 オーディオツールの作り方 超入門編
SIG-Audio準備会#2 オーディオツールの作り方 超入門編SIG-Audio準備会#2 オーディオツールの作り方 超入門編
SIG-Audio準備会#2 オーディオツールの作り方 超入門編Takafumi Inamori
 
Unityプロファイラについて
UnityプロファイラについてUnityプロファイラについて
UnityプロファイラについてMio Ku-tani
 
よくわかる?KotonoSyncの使い方!
よくわかる?KotonoSyncの使い方!よくわかる?KotonoSyncの使い方!
よくわかる?KotonoSyncの使い方!u Suzumof
 
ライブストリーミングの基礎知識その2
ライブストリーミングの基礎知識その2ライブストリーミングの基礎知識その2
ライブストリーミングの基礎知識その2kumaryu
 
イチからはじめるUSB Host API
イチからはじめるUSB Host APIイチからはじめるUSB Host API
イチからはじめるUSB Host APIksk sue
 
HLSについて知っていることを話します
HLSについて知っていることを話しますHLSについて知っていることを話します
HLSについて知っていることを話しますMoriyoshi Koizumi
 
OpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみたOpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた徹 上野山
 
VocalShifterを歌うボイスロイドで使ってみる
VocalShifterを歌うボイスロイドで使ってみるVocalShifterを歌うボイスロイドで使ってみる
VocalShifterを歌うボイスロイドで使ってみる_zuckey_12
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Masaki Muranaka
 
CEDEC2012 今すぐ導入できるボイスファイルマネージメント
CEDEC2012 今すぐ導入できるボイスファイルマネージメントCEDEC2012 今すぐ導入できるボイスファイルマネージメント
CEDEC2012 今すぐ導入できるボイスファイルマネージメントTakafumi Inamori
 
【Unity道場スペシャル 2018京都】最新機能オーバービュー ~2018から2019~
【Unity道場スペシャル 2018京都】最新機能オーバービュー ~2018から2019~【Unity道場スペシャル 2018京都】最新機能オーバービュー ~2018から2019~
【Unity道場スペシャル 2018京都】最新機能オーバービュー ~2018から2019~Unity Technologies Japan K.K.
 
インターネット生放送を支える技術としくみ2015年版
インターネット生放送を支える技術としくみ2015年版インターネット生放送を支える技術としくみ2015年版
インターネット生放送を支える技術としくみ2015年版Yusei Yamanaka
 
Perl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーPerl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーHideo Kimura
 
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナーTakahiro Kujirai
 
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話Keisuke Utsumi
 
ライブストリーミングの基礎知識
ライブストリーミングの基礎知識ライブストリーミングの基礎知識
ライブストリーミングの基礎知識kumaryu
 

What's hot (20)

Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化
 
ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法
 
SIG-Audio準備会#2 オーディオツールの作り方 超入門編
SIG-Audio準備会#2 オーディオツールの作り方 超入門編SIG-Audio準備会#2 オーディオツールの作り方 超入門編
SIG-Audio準備会#2 オーディオツールの作り方 超入門編
 
Unityプロファイラについて
UnityプロファイラについてUnityプロファイラについて
Unityプロファイラについて
 
よくわかる?KotonoSyncの使い方!
よくわかる?KotonoSyncの使い方!よくわかる?KotonoSyncの使い方!
よくわかる?KotonoSyncの使い方!
 
ライブストリーミングの基礎知識その2
ライブストリーミングの基礎知識その2ライブストリーミングの基礎知識その2
ライブストリーミングの基礎知識その2
 
イチからはじめるUSB Host API
イチからはじめるUSB Host APIイチからはじめるUSB Host API
イチからはじめるUSB Host API
 
HLSについて知っていることを話します
HLSについて知っていることを話しますHLSについて知っていることを話します
HLSについて知っていることを話します
 
OpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみたOpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた
 
VocalShifterを歌うボイスロイドで使ってみる
VocalShifterを歌うボイスロイドで使ってみるVocalShifterを歌うボイスロイドで使ってみる
VocalShifterを歌うボイスロイドで使ってみる
 
Android gameprogramming
Android gameprogrammingAndroid gameprogramming
Android gameprogramming
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料
 
CEDEC2012 今すぐ導入できるボイスファイルマネージメント
CEDEC2012 今すぐ導入できるボイスファイルマネージメントCEDEC2012 今すぐ導入できるボイスファイルマネージメント
CEDEC2012 今すぐ導入できるボイスファイルマネージメント
 
【Unity道場スペシャル 2018京都】最新機能オーバービュー ~2018から2019~
【Unity道場スペシャル 2018京都】最新機能オーバービュー ~2018から2019~【Unity道場スペシャル 2018京都】最新機能オーバービュー ~2018から2019~
【Unity道場スペシャル 2018京都】最新機能オーバービュー ~2018から2019~
 
インターネット生放送を支える技術としくみ2015年版
インターネット生放送を支える技術としくみ2015年版インターネット生放送を支える技術としくみ2015年版
インターネット生放送を支える技術としくみ2015年版
 
Perl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーPerl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバー
 
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー
 
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
 
【らぼ★ろぐ】jPlayerの紹介
【らぼ★ろぐ】jPlayerの紹介【らぼ★ろぐ】jPlayerの紹介
【らぼ★ろぐ】jPlayerの紹介
 
ライブストリーミングの基礎知識
ライブストリーミングの基礎知識ライブストリーミングの基礎知識
ライブストリーミングの基礎知識
 

Viewers also liked

理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会
理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会
理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会嶋 是一 (Yoshikazu SHIMA)
 
スマートフォンカード決済について
スマートフォンカード決済についてスマートフォンカード決済について
スマートフォンカード決済についてSohei
 
広がりを見せるAndroidプラットフォーム
広がりを見せるAndroidプラットフォーム広がりを見せるAndroidプラットフォーム
広がりを見せるAndroidプラットフォームShoichi Matsuda
 
Superpowered Media Server for Android
Superpowered Media Server for AndroidSuperpowered Media Server for Android
Superpowered Media Server for AndroidPatrick Vlaskovits
 
20分で理解するdisplaysystem
20分で理解するdisplaysystem20分で理解するdisplaysystem
20分で理解するdisplaysystemmagoroku Yamamoto
 
最新AndroidとIoTプラットフォームの今 (WJ2016)
最新AndroidとIoTプラットフォームの今 (WJ2016)最新AndroidとIoTプラットフォームの今 (WJ2016)
最新AndroidとIoTプラットフォームの今 (WJ2016)嶋 是一 (Yoshikazu SHIMA)
 
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会120分聞けばドヤ顔で語れる apache cordova スーパー勉強会
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会Monaca
 
Android Audio & OpenSL
Android Audio & OpenSLAndroid Audio & OpenSL
Android Audio & OpenSLYoss Cohen
 
AndroidにおけるCocos2d-x製ゲームの画面の録画
AndroidにおけるCocos2d-x製ゲームの画面の録画AndroidにおけるCocos2d-x製ゲームの画面の録画
AndroidにおけるCocos2d-x製ゲームの画面の録画gomachan_7
 
モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線アシアル株式会社
 

Viewers also liked (13)

理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会
理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会
理事長就任講演「イマAndroidで興っていること」日本Androidの会 2013年7月定例会
 
Androidとは何か
Androidとは何かAndroidとは何か
Androidとは何か
 
スマートフォンカード決済について
スマートフォンカード決済についてスマートフォンカード決済について
スマートフォンカード決済について
 
広がりを見せるAndroidプラットフォーム
広がりを見せるAndroidプラットフォーム広がりを見せるAndroidプラットフォーム
広がりを見せるAndroidプラットフォーム
 
Superpowered Media Server for Android
Superpowered Media Server for AndroidSuperpowered Media Server for Android
Superpowered Media Server for Android
 
20分で理解するdisplaysystem
20分で理解するdisplaysystem20分で理解するdisplaysystem
20分で理解するdisplaysystem
 
Understanding open max il
Understanding open max ilUnderstanding open max il
Understanding open max il
 
OpenSL ES 1.1 Reference Card
OpenSL ES 1.1 Reference CardOpenSL ES 1.1 Reference Card
OpenSL ES 1.1 Reference Card
 
最新AndroidとIoTプラットフォームの今 (WJ2016)
最新AndroidとIoTプラットフォームの今 (WJ2016)最新AndroidとIoTプラットフォームの今 (WJ2016)
最新AndroidとIoTプラットフォームの今 (WJ2016)
 
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会120分聞けばドヤ顔で語れる apache cordova スーパー勉強会
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会
 
Android Audio & OpenSL
Android Audio & OpenSLAndroid Audio & OpenSL
Android Audio & OpenSL
 
AndroidにおけるCocos2d-x製ゲームの画面の録画
AndroidにおけるCocos2d-x製ゲームの画面の録画AndroidにおけるCocos2d-x製ゲームの画面の録画
AndroidにおけるCocos2d-x製ゲームの画面の録画
 
モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線
 

Similar to 日本Androidの会発表スライド androidのメディア機能の話

Dev camp2012jpn day2special
Dev camp2012jpn day2specialDev camp2012jpn day2special
Dev camp2012jpn day2specialKatsuhito Katoh
 
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...Developer Camp 2012 Japan Fall
 
Windows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイトWindows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイトnormalian
 
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料Kentaro Matsumae
 
Dev camp2012jpn day2session2
Dev camp2012jpn day2session2Dev camp2012jpn day2session2
Dev camp2012jpn day2session2Daiyu Hatakeyama
 
Web Audio APIの初歩
Web Audio APIの初歩Web Audio APIの初歩
Web Audio APIの初歩Shota Kubota
 
アサカツ・ヨルカツ サウンド番外編
アサカツ・ヨルカツ サウンド番外編アサカツ・ヨルカツ サウンド番外編
アサカツ・ヨルカツ サウンド番外編Takayuki Nakamura
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!Masaki Muranaka
 
[20120410] @marqsの転職を祝うLT
[20120410] @marqsの転職を祝うLT[20120410] @marqsの転職を祝うLT
[20120410] @marqsの転職を祝うLTYoshifumi Yamaguchi
 
Juceで作るオーディオアプリケーション
Juceで作るオーディオアプリケーションJuceで作るオーディオアプリケーション
Juceで作るオーディオアプリケーションKohsuke Yuasa
 
スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19Kenji Daikoku
 
HTML5 VIDEO on Chromecast
HTML5 VIDEO on ChromecastHTML5 VIDEO on Chromecast
HTML5 VIDEO on ChromecastKatsumi Onishi
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境Fumihito Yokoyama
 
DEV-019_Programmable Video ~Azure Media Services でのビデオ サービス開発~
DEV-019_Programmable Video ~Azure Media Services でのビデオ サービス開発~DEV-019_Programmable Video ~Azure Media Services でのビデオ サービス開発~
DEV-019_Programmable Video ~Azure Media Services でのビデオ サービス開発~decode2016
 
Azure vs aws比較 エンコード ace用
Azure vs aws比較 エンコード ace用Azure vs aws比較 エンコード ace用
Azure vs aws比較 エンコード ace用裕之 木下
 
「Pythonでやってみた」~広がるプログラミングの愉しみ~
「Pythonでやってみた」~広がるプログラミングの愉しみ~「Pythonでやってみた」~広がるプログラミングの愉しみ~
「Pythonでやってみた」~広がるプログラミングの愉しみ~Ransui Iso
 
Visual Studio CodeでRを使う
Visual Studio CodeでRを使うVisual Studio CodeでRを使う
Visual Studio CodeでRを使うAtsushi Hayakawa
 
シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議Shinra_Technologies
 

Similar to 日本Androidの会発表スライド androidのメディア機能の話 (20)

Dev camp2012jpn day2special
Dev camp2012jpn day2specialDev camp2012jpn day2special
Dev camp2012jpn day2special
 
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
 
Windows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイトWindows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイト
 
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
 
Dev camp2012jpn day2session2
Dev camp2012jpn day2session2Dev camp2012jpn day2session2
Dev camp2012jpn day2session2
 
Dev camp2012jpn day2session2
Dev camp2012jpn day2session2Dev camp2012jpn day2session2
Dev camp2012jpn day2session2
 
Web Audio APIの初歩
Web Audio APIの初歩Web Audio APIの初歩
Web Audio APIの初歩
 
アサカツ・ヨルカツ サウンド番外編
アサカツ・ヨルカツ サウンド番外編アサカツ・ヨルカツ サウンド番外編
アサカツ・ヨルカツ サウンド番外編
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
 
[20120410] @marqsの転職を祝うLT
[20120410] @marqsの転職を祝うLT[20120410] @marqsの転職を祝うLT
[20120410] @marqsの転職を祝うLT
 
Juceで作るオーディオアプリケーション
Juceで作るオーディオアプリケーションJuceで作るオーディオアプリケーション
Juceで作るオーディオアプリケーション
 
スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19
 
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
 
HTML5 VIDEO on Chromecast
HTML5 VIDEO on ChromecastHTML5 VIDEO on Chromecast
HTML5 VIDEO on Chromecast
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
DEV-019_Programmable Video ~Azure Media Services でのビデオ サービス開発~
DEV-019_Programmable Video ~Azure Media Services でのビデオ サービス開発~DEV-019_Programmable Video ~Azure Media Services でのビデオ サービス開発~
DEV-019_Programmable Video ~Azure Media Services でのビデオ サービス開発~
 
Azure vs aws比較 エンコード ace用
Azure vs aws比較 エンコード ace用Azure vs aws比較 エンコード ace用
Azure vs aws比較 エンコード ace用
 
「Pythonでやってみた」~広がるプログラミングの愉しみ~
「Pythonでやってみた」~広がるプログラミングの愉しみ~「Pythonでやってみた」~広がるプログラミングの愉しみ~
「Pythonでやってみた」~広がるプログラミングの愉しみ~
 
Visual Studio CodeでRを使う
Visual Studio CodeでRを使うVisual Studio CodeでRを使う
Visual Studio CodeでRを使う
 
シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議
 

日本Androidの会発表スライド androidのメディア機能の話

Editor's Notes

  1. \n
  2. 最初に簡単に自己紹介させて頂きます。\n法政大学 情報科学研究科 修士1年の松本達弥と申します。\nとは言っても、普段はこの小奇麗なキャンパスではなく、三鷹の先のド田舎の小金井というところにいます。\n簡単に今までに私がやってきたことを紹介させて頂きますと、\nCRI・ミドルウェアという会社でのゲーム向け音声・映像ミドルウェアのAndroidへの移植\n面白法人カヤックという会社で、ReengoというFacebookアカウントで通話ができるReengoというアプリの制作\n音声合成ミドルウェアの移植初期調査、日本一暑い街、群馬県館林にセンサーネットワークを張り巡らせて、\n色々やってみようという実験、これは、東京電機大、中央大、東大、気象庁さんなどと一緒にやったプロジェクトなのですが、これのクライアントアプリ制作。\n
  3. 宣伝です。\n5ヶ月ぐらい前にAndroid NDKの本を出版しました。\nよろしくお願いします!\n
  4. で、今日の本題\nAndroidのマルチメディア機能についてなのですが、\n私の今まで携わって来たものが、先程も紹介した通り、マルチメディア関連のアプリが多かったんですね。\nそういった経緯もありまして、結構大学とかで、卒論とかの相談で、Androidで録音したいんだけどどうすればいい?とか、\nファミコンみたいな音を鳴らしたいんだけど、方法がわからないといった相談を受けるんですね。\n\nで、そのたび説明してるんですが、イザ自分でも色々調べてみると、バージョンが上がるごとに機能が増えていって、かなりごちゃごちゃしていると。\n例えば、単に音を鳴らすだけでも何種類もある。\n確かに、これはいきなりAndoridを始めた人がどれを使えばいいかなんて、わかりませんよね。\n\nさらに、かなりAndroidのマルチメディア機能って不親切なんですね。\n例えばエラーが起きても、エラーが起きたことは教えてくれても、なんでエラーが起きたかは教えてくれない。\n\n幸運にも、私はアルバイトなどの都合上、マルチメディアを担当するライブラリlibstagefrightっていう名前なのですが、\nこの内部とかも、若干読んだ経験がありまして、そのおかげでトラブルが起きた時も、結構すぐに理由がわかることができたりするのですが、\nそもそもJavaレイヤーの開発者は、内部のコードを読むことはないわけです。というか、読む必要があるっていうのはかなり不親切な設計だと思うんですが。\nですから、トラブルが起きた時に想像でしかデバッグができないという問題があったりします。\n\nそこで、今日は、Androidのマルチメディア機能について、何をしたい時には、どのクラス・APIを使えばいいのかという話をしたいと思います。\nまた、エラーが起きた時に、ある程度、OSのメディアフレームワークのコードからそれを簡単に推測する方法などを紹介します。\nそして、最後に、JellyBeansから搭載された最新MediaAPIであるLowMediaAPIについて簡単に紹介したいと思います。\n\n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \nPCで動く映像編集ソフトや、波形編集ソフトで編集して保存するのに必要な機能ってなんでしょうか。\n基本的には、Mpeg4とかMP3形式などの圧縮された映像・音声を開いて、\nフレーム、これは、動画の\n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n