Android中的MediaPlayer和VideoView有啥区别

Posted

技术标签:

【中文标题】Android中的MediaPlayer和VideoView有啥区别【英文标题】:What is the difference between MediaPlayer and VideoView in AndroidAndroid中的MediaPlayer和VideoView有什么区别 【发布时间】:2011-05-05 00:30:00 【问题描述】:

我想知道他们在流式视频方面是否有区别。

我知道VideoView 可以用于流媒体,Mediaplayer 有什么用?据我所知,MediaPlayer 可以和VideoView 做同样的事情对吧?

谁能给我答案?

如果我想通过使用 RTSP 将视频从服务器流式传输到 android,我应该从哪一个开始? VideoViewMediaPlayer?

有什么建议吗?

【问题讨论】:

不应该是超级用户吗? 我认为它属于这里。这不是安卓编程题吗? 【参考方案1】:

问同样的问题,正如我从 Mark (CommonsWare) advised 在这里的许多线程中了解到的那样,VideoView 是 MediaPlayer 和 SurfaceView 提供嵌入式控件的包装器(20000 行代码)。

他还好心地分享了一些例子:

https://github.com/commonsguy/cw-advandroid/blob/master/Media/Video/src/com/commonsware/android/video/VideoDemo.java

https://github.com/commonsguy/vidtry/blob/master/src/com/commonsware/android/vidtry/Player.java

以及来自 android sdk 的示例 http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo.html

还有一些人在模拟器上播放视频时遇到问题,所以如果您遇到问题,请务必在实际设备上进行测试

【讨论】:

【参考方案2】:

VideoView 本质上是一个与 MediaPlayer 相关联的视图,可以更轻松地在您的应用中实现视频。如果您没有做太多的自定义工作,VideoView 是您的最佳选择。

也就是说,您也可以将 RTSP 链接传递给系统,以使用最合适的应用播放视频,这更容易做到:

String url = "rtsp://yourrtsplink.com/blah";
Uri uri = Uri.parse(url);
startActivity(new Intent(Intent.ACTION_VIEW, uri));

应该在设备上测试视频,因为模拟器的播放效果很差,而且您还应该知道 RTSP 需要打开一个额外的端口,这被某些防火墙阻止。

【讨论】:

【参考方案3】:

阅读下面的链接,它将帮助您并解决您的问题。

http://eclipsesource.com/blogs/2012/08/24/lessons-learned-when-using-androids-mediaplayer-and-videoview/

【讨论】:

【参考方案4】:

VideoAdView 是 MediaPlayer 和 SurfaceView 的包装器,如果视频文件存储在应用程序的内部存储中,使用内容提供程序或将它们存储为全球可读,则使用 VideoView 实现视频播放器比使用 MediaPlayer 更容易,否则将无法正常工作

【讨论】:

以上是关于Android中的MediaPlayer和VideoView有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 中的 SoundPool 到 MediaPlayer

Android -- MediaPlayer内部实现简析

Android Multimedia框架总结MediaPlayer框架及播放网络视频案例

Android中的音频处理------SoundPool,MediaRecorder,MediaPlayer以及RingStone总结

Android Multimedia框架总结MediaPlayer框架及播放网络视频案例

Android -- 多媒体播放之MediaPlayer使用内部实现简析