28

我正在编写一个应用程序来使用流媒体播放 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 设备和模拟器上都抛出错误(根据邮件列表,模拟器有一些防火墙问题)这是错误消息

错误/PlayerDriver(35):命令 PLAYER_INIT 完成,但出现错误或信息 PVMFFailure

第二种方法:

一种从http://www.youtube.com/get_video?v= &t=<>&<> 获取3gp 文件路径的 hack 方法 。获取文件路径后,我可以调用 setVideoURI 并且播放正常。但这是实现要求的一种黑客方式。我也检查了 Youtube 应用程序,它也用 hack 方式播放 youtube url。(用 logcat 检查)

我尝试从 VideoView 更改为 MediaPlayer,但错误没有变化。

有没有“干净”的方式来做到这一点?

请让我知道你的想法。

4

8 回答 8

2

有时 Uri.parse 返回“null”,因为无法解析 rtsp 协议而不是 http 协议。

使用 Log in logcat 查看它,Uri.parse(rtspURL).toString()您将看不到任何内容。或者只做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();
于 2010-05-28T10:45:42.393 回答
2

如果您愿意在新活动中完成这项工作,以下内容将在设备上工作,但在模拟器上无效:

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

于 2009-08-21T02:29:56.520 回答
1

肮脏的方式完全有效,我印象深刻!如果你有一个可行的解决方案,那就去吧。我认为目前还没有一种干净的方法可以让 RTSP 流在 SDK 中工作。

于 2009-06-17T19:45:54.110 回答
1

关注Youtube API

我认为这也使用 youtube 应用程序(你不想要的)

但只是参考可能是你会找到一些解决它的关键

于 2013-01-07T09:12:13.440 回答
1

我们面临一个非常相似的问题。

目前,我正处于项目的第一步,我正试图让视频视图简单地工作。我从这里获取数据:http: //gdata.youtube.com/demo/我正在测试所有视频链接。

RTSP 3GP 视频真的是非常低质量的视频......而且没有办法访问 mp4(高质量)视频。我真的不知道如何使它工作,因为我认为 MP4 流仅适用于高级开发人员......

于 2012-04-28T10:25:37.520 回答
0

视频上的标题表明它确实适用于 Android。所以,尝试一个好的视频链接来进行试验。这是我使用的一个:

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

我在 Nexus 和三星平板电脑上工作得很好。

于 2014-07-02T20:53:18.990 回答
0

我使用以下代码显示了 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
}
于 2011-06-18T06:35:31.957 回答
0

你可以上网吗?如果没有,请在清单文件中添加 Internet 权限

 <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
于 2014-12-31T18:49:45.903 回答