MediaPlayer 和 VideoView 在 Android 中的区别是什么

我想知道在流媒体视频方面他们之间是否有区别。

我知道 VideoView可以用于流媒体,那么 Mediaplayer是用来做什么的呢?据我所知,MediaPlayer可以做同样的事情作为 VideoView的权利?

有人能告诉我答案吗?

如果我想使用 RTSP 从服务器上传输视频到 Android,我应该从哪一个开始?VideoView还是 MediaPlayer

有什么建议吗?

42753 次浏览

Was asking the same question and as I understood from what Mark (CommonsWare) advised on numerous threads here, VideoView is a wrapper (200 hundred lines of code) for MediaPlayer and SurfaceView to provide embedded controls.

He also kindly shared some examples:

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

and example from android sdk http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo.html

Also some people had issues playing video on emulator, so make sure to test it on actual device if you have issues

VideoView is essentially a View that is tied to a MediaPlayer to make it a lot easier to implement videos in your app. If you aren't doing much custom work, VideoView is the way to go.

That said, you can also pass the RTSP link off to the system to use the most appropriate app for playing the video, which is even easier to do:

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

Video should be tested on a device, since emulator playback is poor, and you should also be aware that RTSP requires an extra port to be open, which is blocked by some firewalls.

The VideoAdView is a wrapper for MediaPlayer and SurfaceView, it's more easy to implement video player with VideoView than with a MediaPlayer, if the video files are stored in the internal storage of the app use content provider or store them as world readable, otherwise it will not work