質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

7668閲覧

Android 4系での複数MediaPlayerの同時再生

shirosaki

総合スコア11

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

1クリップ

投稿2016/03/16 01:07

以下に記載の内容は、Android5系以降では実現できております。
Android4.3実機、4.4.2実機、4.3エミュレータでは下記に記載のエラーとなります。

SurfaceViewをだけをもつfargmentにて、ギャラリーから動画ファイル(mp4のh264形式)を2つ選択し、
2つ選択し終えたら、MediaplayerにsetDataSource(), setDisplay(), prepare()し、
onPrepared()にてplay()するだけの単純な構成です。
このfragmentをActivityに2つ貼っています。
ですがAndroid4系では、必ず2つ目のファイルのprepare()にて、
java.io.IOException: Prepare failed.: status=0x1
と表示され、prepare()が失敗します。
2つ目のファイルから再生すれば問題なく再生できますし、まったく同じコードがAndroid5系では再生できますので
ファイルパスやファイル自体、MediaPlayerのメソッドの呼び方には問題ないと考えております。
また、1つ目のファイルを再生し終え、release()すれば2つ目のファイルが再生できることも確認しています。
やりたいことは2つのmp4動画ファイルの同時再生です。

Android4系では動画の同時再生できないのでしょうか。
また、その旨が記載されているドキュメントなどありますでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

色々自分なりに調べてみました。
結論から言うと、難しいと思われます。

公式の資料を読んでみましたが、
[MediaPlayerのAPI Level1](http://developer.android.com/reference/android/media/MediaPlayer.html#create(android.content.Context, int))のcreate()は、下記の通り、一度Prepare()に成功している状態のまま、再度コールしてはいけないといった記述が見受けられます。どうやら5.0未満のMediaPlayerはシングルトンでしょう。

Convenience method to create a MediaPlayer for a given resource id. On success, prepare() will already have been called and must not be called again.

ところが、[MediaPlayerのAPI Level21](http://developer.android.com/reference/android/media/MediaPlayer.html#create(android.content.Context, int, android.media.AudioAttributes, int))(=Android5.0以降)のcreate()は、下記の通り、audio属性とセッションIDごとに新しくMediaPlayerのインスタンスが作られるようです。

Same factory method as create(Context, int) but that lets you specify the audio attributes and session ID to be used by the new MediaPlayer instance.

投稿2016/03/18 15:08

Odacchi

総合スコア907

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shirosaki

2016/03/22 01:50

ありがとうございました。 5.0未満でMediaPlayerで同時再生が対応されていないことが明文化されていることを知りたかったので、知れてよかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問