Youtube動画をバックグラウンドで再生する方法

1,046 views
Skip to first unread message

snow69it

unread,
Jun 30, 2012, 7:01:11 PM6/30/12
to 日本Androidの会
はじめまして

私は今Youtubeの動画をサービスとしてバックグラウンドで再生する方法を探しています。
多のアプリを使いながらYoutubeの音声や音楽を再生し続けたいからです。

MediaPlayerクラスはyoutubeのリソースでは3gpしか再生できないのでWebViewと
Youtubeのクロムレスプレーヤーを用いて再生しています。
画面に表示しているActivity上ではうまく機能するのですが、サービス上では
クロムレスプレイヤーが初期化されないためうまく動きません。
(クロムレスプレイヤーがブラウザにロードされる初期化されるとonYouTubePlayerReady(playerId)
というコールバックが実行されますが、バックグラウンドではこれが実行されないのです)

この現象はサービス上だけではなく、Activity上であっても他のViewにWebViewが隠れている様な
状況では起こることもわかっています。
また、画面上にWebViewが見える状態であってもオーバーレイで使用されるような
別のレベルのレイヤーに表示させた場合も初期化は行われませんでした。

このような状況でプレイヤーを初期化させる方法はありますでしょうか。
もしくは全く別の方法でバックグラウンド再生が可能であれば、その方法
を教えて頂けますでしょうか。

ちまたのアプリではFREEdiのようにローカルに保存して再生するものや
PVSTAR+のように(おそらく)ストリーミング再生するものなど、
Youtube動画をバックグラウンドで再生しているものが多数あります。

アイデアでも結構ですので、お力添えのほどよろしくお願い致します。



Hi, All:
I am developing youtube player which can play in background as
service.
Because MediaPlayer class can play only 3gp, so I use webview and
youtube api chromeless player.
It works well in Activity, but not work in Service, because the
player
can't initialized in background.
(When Chromeless player is initialized, Chromeless player call
onYouTubePlayerReady(playerId) callback function. But it never called
in background.)
I found that player can't initialize in Activity if webview is hidden
in any other views.
How to initialize the player in background?
Or are there any other way to play youtube video in background
service?
Hope your help.
Thanks and Regard

ohisamallc

unread,
Jul 1, 2012, 11:14:01 PM7/1/12
to android-g...@googlegroups.com
山形のohisamaです。
山形は、晴れてますが、ジメジメします。
がんばろう、東北。

android1.6なんで、あれですが。
自分の作ったanwebは、web上の
flvをダウンロード後、再生します。
今、試したら、バックグラウンドで
音再生してます。
すいません、有料です。
確か、audiotrack、jni使ってます。
youtubeのidもらったら、再生みたいな
intentは。未実装です。


> -----Original Message-----
> From: android-g...@googlegroups.com
> [mailto:android-g...@googlegroups.com]On Behalf Of snow69it
> Sent: Sunday, July 01, 2012 8:01 AM
> To: 日本Androidの会
> Subject: [work] [android-group-japan: 18955] Youtube動画をバックグラウン
> ドで再生する方法
>
>
> はじめまして
>
> 私は今Youtubeの動画をサービスとしてバックグラウンドで再生する方法を探して

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られ

> います。
> このグループに投稿するには、android-g...@googlegroups.com にメール

> 送信してください。
> このグループから退会するには、
> android-group-j...@googlegroups.com にメールを送信してくださ

> 。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja

> らこのグループにアクセスしてください。
>
>
>

snow69it

unread,
Jul 2, 2012, 12:36:31 PM7/2/12
to android-g...@googlegroups.com
ご返信ありがとうございます。

>flvをダウンロード後、再生します。 
Androidではflvを直接再生できないと思っていたのですが、
AudioTrackとJNIでどうにかすれば(変換?)、再生できるということ
でしょうか。

今回はローカルに保存しないコンセプトだったのですが、
可能なのであれば、ダウンロードも検討したいと思います。



2012年7月2日月曜日 12時14分01秒 UTC+9 ohisama:
> このグループに投稿するには、android-group-ja...@googlegroups.com にメール

> 送信してください。
> このグループから退会するには、
> android-group-japan+unsub...@googlegroups.com にメールを送信してくださ

snow69it

unread,
Jul 2, 2012, 1:11:37 PM7/2/12
to android-g...@googlegroups.com
ご返信ありがとうございます。

私の認識では3gpだと画質がかなり劣化しています。
youtubeでビデオエントリを取得するとformatの値が1,5,6の3つあって、
1と6が3gpで5がflv。
6の3gpは音質はflvに近いのですが、画質がかなり劣化してしまうので、
高画質なflvで再生するためにwebviewを使用しています。

私が取得したビデオエントリの各リソースへのURLの一例を下記に示します。
・リクエスト

・format=5


他に高画質な3gpを取得する方法はありますでしょうか。

もしくはformat=6の3gpの音質劣化(気のせい?)を我慢して、フォアグラウンドでは
webview、バックグラウンドではMediaPlayerを切り替えて使う方法を検討してみます。


2012年7月2日月曜日 18時26分31秒 UTC+9 tarotaro:
はじめまして、Youtubeでいいのなら、普通に高画質な3gpの動画が取得できると思うのですが
それではだめなんですか?
Youtube Playerで再生されている動画と画質的にはかわらないと思うのですが。
以上よろしくおねがいします。


2012年7月1日日曜日 8時01分11秒 UTC+9 snow69it:

snow69it

unread,
Jul 4, 2012, 9:04:41 PM7/4/12
to 日本Androidの会
goodspeedさんよりメールでアドバイス頂きました。
目的が達成できそうですので、内容を報告してクローズします。

手順は下記のとおりです。
1.PC用動画再生ページを取得
2.ページを解析してmp4のURLを取得
3.サービス内で作ったMediaPlayerでmp4のURLからストリーミング再生

注意点は
 ・mp4のリソースはyoutubeAPIで提供されるものでないこと
 ・ページの構成が変更されると、ページ解析の処理も追随して変更が必要になること

以上、アドバイス頂いた皆様のご好意に感謝致します。
ありがとうございました。

snow69it
Reply all
Reply to author
Forward
0 new messages