我正在开发视频播放器应用程序,我想在本地视频视图中播放
.mp4
视频。我无法使用 URL 播放视频。我收到错误消息“抱歉,无法播放此视频”,而且我也无法在本机视频视图中播放下载的视频。
我在视频视图中播放视频的代码:
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();
终于对我有用了。
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();
}
});
MP4 只是一个容器——里面的视频和音频流都将以不同的格式进行编码。
Android 本身只支持某些类型的格式。 这是这里的列表。
确保支持视频和音频编码类型。仅仅因为它说“mp4”并不自动意味着它应该可以播放。
像这样使用:
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();
如果您遇到此错误无法在客户端打开文件,尝试在 Android 中尝试服务器端错误。还有参考这个。 希望这会给你一些解决方案。
检查您正在渲染的视频格式。 mp4 格式的渲染从 API 级别 11 开始 并且格式必须是 mp4(H.264)
我遇到了同样的问题,我必须在点击格式之前将我的视频转换为多种格式:使用total video converter to convert the video to mp4。它就像一个魅力。
我不确定这是问题所在,但对我有用的是调用
mVideoView.start();
inside 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)
{
mVideoView.start();
}
});
在 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()
}