web-dev-qa-db-ja.com

Youtubeビデオのストリーミング

ストリーミングを使用してYouTube動画を再生するアプリケーションを書いています。

最初の方法:

GData APIを使用して、ビデオのRTSP URLを取得しています。 RTSP URLを再生するコードは次のとおりです。

   VideoView mVideoView = new VideoView(this);
   setContentView(mVideoView);
   mVideoView.setVideoURI(Uri.parse("rtsp://rtsp2.youtube.com/CiILENy73wIaGQkDwpjrUxOWQBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp"));
   mVideoView.start();

しかし、G1デバイスとエミュレーターの両方でエラーがスローされます(エミュレーターには、メーリングリストにあるように、ファイアウォールの問題があります)ここにエラーメッセージがあります

ERROR/PlayerDriver(35):コマンドPLAYER_INITがエラーまたは情報PVMFFailureで完了しました

2番目の方法:

http://www.youtube.com/get_video?v= &t = <>&<>から3gpファイルのパスを取得するハック方法。ファイルパスを取得した後、 setVideoURIとうまく再生されます。しかし、それは要件を達成するためのハック方法です。 Youtubeアプリもチェックしましたが、YouTubeのURLを再生するためのハック方法も実行します。(logcatでチェック)

VideoViewからMediaPlayerに変更してみましたが、エラーは変わりません。

これを行う「クリーン」な方法はありますか?

考えを教えてください。

28
Vinay

新しいアクティビティで作業を行う場合、以下はデバイスでは機能しますがエミュレータでは機能しません。

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));

2
emmby

Httpプロトコルではなくrtspプロトコルを解析できないため、Uri.parseが「null」を返す場合があります。

LogcatのLog Uri.parse(rtspURL).toString()で確認すると、何も書かれていないことがわかります。またはmake Log.d("tag", Uri.parse);のみを実行すると、同じものが返されます。

Uriを解析(作成)する別の方法を見つけてください。

私はそれを試して実行します:

String urlVideo = <your rtspURL>
VideoView video = (VideoView)findViewById(R.id.VideoView01);
Log.d(tag , urlVideo);
video.setVideoURI(Uri.parse(urlVideo));
MediaController mc = new MediaController(this);
video.setMediaController(mc);
video.requestFocus();
video.start();
mc.show();
2
XanXa

汚いやり方が全然効いているのに感動しました!有効なソリューションがある場合は、それを使用してください。 SDKでRTSPストリーミングを動作させるための明確な方法はまだないと思います。

1
haseman

私たちは非常に似た問題に直面しました。

現在、私はプロジェクトの最初のステップにいます。ビデオビューを単純に機能させるようにしています。ここからデータを取得しています: http://gdata.youtube.com/demo/ で、すべての動画リンクをテストしています。

RTSP 3GPビデオは本当に本当に低品質のビデオです...そして、mp4(高品質)ビデオにアクセスする方法はありません。 MP4ストリームはプレミアム開発者だけが利用できると思うので、どうやってそれを機能させるかは本当にわかりません。

1
StErMi

目を見張る Youtube API

これもYouTubeアプリを使っていると思います(欲しくない方)

しかし、参照するだけで問題を解決するための鍵が見つかる可能性があります

1
edwin

インターネットにアクセスできますか?そうでない場合は、インターネットアクセス許可をマニフェストファイルに追加してください

 <uses-permission Android:name="Android.permission.INTERNET" />

また、次のURIを試してください。

rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov

http://www.wowza.com/_h264/BigBuckBunny_175k.mov
0
Albert Chen

ビデオのヘッダーは、Androidで機能することを示しています。だから、実験するための良いビデオリンクを試してください。これが私が使うものです:

rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov

NexusとSamsungのタブレットでうまく機能します。

0
Droid Chris

次のコードでYouTube動画を表示しました。お役に立てれば幸いですが、改善の余地があることをお知らせください。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    startActivity(new Intent(Intent.ACTION_VIEW, 
                  Uri.parse("http://www.youtube.com/watch?v=...")));
}

public void onPrepared(MediaPlayer mp) {
     // TODO Auto-generated method stub
}
0
reaper