我正在处理视频播放器应用,我想在原生视频中播放 .mp4 视频。我使用网址 无法 播放 视频。我收到错误对不起此视频无法播放而且我无法在原生视频视图中播放下载的视频。
我在videoview中播放视频的代码:
String mUrl = "http://www.servername.com/projects/projectname/videos/1361439400.mp4";
VideoView mVideoView = (VideoView)findViewById(R.id.videoview)
videoMediaController = new MediaController(this);
mVideoView.setVideoPath(mUrl);
videoMediaController.setMediaPlayer(mVideoView);
mVideoView.setMediaController(videoMediaController);
mVideoView.requestFocus();
mVideoView.start();
请分享您的想法。
感谢。
答案 0 :(得分:29)
MP4只是一个容器 - 其中的视频和音频流都将以不同的格式编码。
Android原生仅支持某些类型的格式。 This is the list here.
确保支持视频和音频编码类型。仅仅因为它说“mp4”并不自动意味着它应该可以播放。
答案 1 :(得分:19)
使用像这样:
Uri uri = Uri.parse(URL); //Declare your url here.
VideoView mVideoView = (VideoView)findViewById(R.id.videoview)
mVideoView.setMediaController(new MediaController(this));
mVideoView.setVideoURI(uri);
mVideoView.requestFocus();
mVideoView.start();
另一种方法:
String LINK = "type_here_the_link";
VideoView mVideoView = (VideoView) findViewById(R.id.videoview);
MediaController mc = new MediaController(this);
mc.setAnchorView(videoView);
mc.setMediaPlayer(videoView);
Uri video = Uri.parse(LINK);
mVideoView.setMediaController(mc);
mVideoView.setVideoURI(video);
mVideoView.start();
如果您收到此错误Couldn't open file on client side, trying server side Error in Android。还有Refer this。 希望这会给你一些解决方案。
答案 2 :(得分:19)
最后它对我有用。
private VideoView videoView;
videoView = (VideoView) findViewById(R.id.videoView);
Uri video = Uri.parse("http://www.servername.com/projects/projectname/videos/1361439400.mp4");
videoView.setVideoURI(video);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setLooping(true);
videoView.start();
}
});
希望这会有所帮助。
答案 3 :(得分:5)
检查要渲染的视频的格式。 从API级别11开始渲染mp4格式 格式必须是mp4(H.264)
我遇到了同样的问题,在我点击格式之前,我必须将视频转换为多种格式:使用全视频转换器将视频转换为mp4。它就像一个魅力。
答案 4 :(得分:1)
我不确定问题是什么,但对我有用的是在mVideoView.start();
事件回调中调用mVideoView.setOnPreparedListener
。
例如:
Uri uriVideo = Uri.parse(<your link here>);
MediaController mediaController = new MediaController(mContext);
mediaController.setAnchorView(mVideoView);
mVideoView.setMediaController(mediaController);
mVideoView.setVideoURI(uriVideo);
mVideoView.requestFocus();
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mp)
{
mVideoViewPeekItem.start();
}
});
答案 5 :(得分:0)
在Kotlin中,您可以这样做
val videoView = findViewById<VideoView>(R.id.videoView)
// If url is from raw
/* val url = "android.resource://" + packageName
.toString() + "/" + R.raw.video*/
// If url is from network
val url = "http://www.servername.com/projects/projectname/videos/1361439400.mp4"
val video =
Uri.parse(url)
videoView.setVideoURI(video)
videoView.setOnPreparedListener{
videoView.start()
}