ストリーミングを使用して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に変更してみましたが、エラーは変わりません。
これを行う「クリーン」な方法はありますか?
考えを教えてください。
新しいアクティビティで作業を行う場合、以下はデバイスでは機能しますがエミュレータでは機能しません。
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));
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();
汚いやり方が全然効いているのに感動しました!有効なソリューションがある場合は、それを使用してください。 SDKでRTSPストリーミングを動作させるための明確な方法はまだないと思います。
私たちは非常に似た問題に直面しました。
現在、私はプロジェクトの最初のステップにいます。ビデオビューを単純に機能させるようにしています。ここからデータを取得しています: http://gdata.youtube.com/demo/ で、すべての動画リンクをテストしています。
RTSP 3GPビデオは本当に本当に低品質のビデオです...そして、mp4(高品質)ビデオにアクセスする方法はありません。 MP4ストリームはプレミアム開発者だけが利用できると思うので、どうやってそれを機能させるかは本当にわかりません。
インターネットにアクセスできますか?そうでない場合は、インターネットアクセス許可をマニフェストファイルに追加してください
<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
ビデオのヘッダーは、Androidで機能することを示しています。だから、実験するための良いビデオリンクを試してください。これが私が使うものです:
rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov
NexusとSamsungのタブレットでうまく機能します。
次のコードで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
}