VideoViewを使ったmp4の再生について

2,607 views
Skip to first unread message

outerlet

unread,
Oct 13, 2010, 10:11:40 AM10/13/10
to 日本Androidの会
お世話になります。outerletと申します。
動画(mp4)を再生できるアプリケーションを作成したくて試行錯誤しています。

再生したいのは、H.264でエンコードしたmp4ファイルです。
PC(Quicktimeやその他のソフト)でも、自分のXperiaにインストールしてあるメディアプレーヤ(Mediascapeではない)でも再
生できるファイルです。
しかしAPI Level-4のAVDにVideoViewを使った自作アプリケーションをインストールして、それで再生しようとすると、音声は出力さ
れるのに画像が表示されないという事態に陥ってしまいました。
以下がそのアプリケーションのソースです。
再生は全てonCreateで行っていますので、ここだけ抜粋して記載しました。

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video_player);

_video = (VideoView)findViewById(R.id.video_player);

try {
_video.setVideoPath("/sdcard/sample.mp4");
// _video.setVideoURI(Uri.parse("http://www.youtube.com/watch?
v=..."));
} catch(Exception e) {
Log.e("SampleVideoPlayer", "error name is " +
e.getClass().getName());
}

_video.start();

if(_video.isPlaying()) {
Log.v("SampleVideoPlayer", "Now playing.");
}
}

_videoはVideoView型の変数です。
余談ながら再生中に"Now playing."というログが出力されないので、_video.start()の後に書かれている処理には到達していな
いように思います。
同じような事態を経験された方や原因に思い当たる方がいらっしゃれば、どうぞ御教示頂けますよう、お願い致します。

また、いずれはYoutubeの動画なども再生したいと思っています。
試しにコメントアウトしている箇所を有効にし、代わりに一行上のコードをコメントアウトして実行すると、「この動画は再生できません」というダイアログ
が出力されてしまいます。
これについても、もしお心当たりがあれば御助言頂けると大変助かります。

以上、どうぞよろしくお願い申し上げます。

awwa

unread,
Oct 13, 2010, 11:55:40 AM10/13/10
to android-g...@googlegroups.com
あわです。

同じ方法ではありませんが、ApiDemosのVideoViewDemo.javaにあるように、
MediaControllerを使ってみてはいかがでしょうか?

それと、YouTubeの動画再生ですが、
ここにあるように、エミュレータだとUDPパケットが通せなくてダメだよ、
的なアドバイスをいただいたことがあります。
この時は実機を持っていなかったのでその後試していませんが。

また、YouTube上の動画は結局、
Uri uri = Uri.parse(movieurl);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
startActivityIfNeeded(intent, -1);
みたいな感じでYouTubeアプリに再生をお任せしちゃいましたが。

何かの参考になればと思います。

2010年10月13日23:11 outerlet <freedo...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。


outerlet

unread,
Oct 14, 2010, 1:55:43 AM10/14/10
to 日本Androidの会
あわさん、ありがとうございました。

VideoViewDemo.java
VideoViewDemo_Video.java
を参考にSurfaceViewとMediaPlayerを使ってやってみましたが、やはり再生できませんでした。
試しにソースをVideoViewのものに戻し、Xperiaのアドオンを使ってAVDを作成し、そこで再生しようとすると今度は音声すら出力されない
ようになりました。
そこで更に新しいAVDを作りました。設定は以下の通りです。
今まではSkinをデフォルト(HVGA)にしていたのですが、新しいAVDではWVGA854にしました。

・ターゲット:Google APIs - API Level 4
・SD Card :256M
・Skin   :WVGA854

結果、Skinを変えただけなのに、今まで聞こえていた音声すら聞こえなくなりました。
ひょっとしてプログラムが悪いのではなくエミュレータが悪いのではと、アプリケーションとmp4ファイルを実機(手持ちのXperia)に移して動かし
たところ、今度は画像も音声も流れるようになりました。
どうやらVideoViewを使う方法でとりあえずは問題なさそうです。

そこで改めて皆さんに質問なのですが、いつもどのような設定でエミュレータを作っておられますか?
具体的に言うと、どのような設定にすれば動画や音声もエミュレーションすることができるAVDを作成できますか?
引き続き、どうかご教示のほどお願い致します。


On 10月14日, 午前12:55, awwa <awwa...@gmail.com> wrote:
> あわです。
>
> 同じ方法ではありませんが、ApiDemosのVideoViewDemo.javaにあるように、
> MediaControllerを使ってみてはいかがでしょうか?
>
> それと、YouTubeの動画再生ですが、http://groups.google.com/group/android-developers/browse_thread/threa...
> ここにあるように、エミュレータだとUDPパケットが通せなくてダメだよ、
> 的なアドバイスをいただいたことがあります。
> この時は実機を持っていなかったのでその後試していませんが。
>
> また、YouTube上の動画は結局、
> Uri uri = Uri.parse(movieurl);
> Intent intent = new Intent(Intent.ACTION_VIEW, uri);
> intent.addCategory(Intent.CATEGORY_BROWSABLE);
> startActivityIfNeeded(intent, -1);
> みたいな感じでYouTubeアプリに再生をお任せしちゃいましたが。
>
> 何かの参考になればと思います。
>
> 2010年10月13日23:11 outerlet <freedom.t...@gmail.com>:
> > このグループから退会するには、android-group-j...@googlegroups.com<android-group-japan%2Bunsu...@googlegroups.com>にメールを送信してください。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。
Reply all
Reply to author
Forward
0 new messages