44

我正在开发一个视频播放器应用程序,我想.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();
4

6 回答 6

40

最后它对我有用。

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();
    }
});
于 2016-05-19T08:06:37.483 回答
31

MP4 只是一个容器——其中的视频和音频流都将以不同的格式编码。

Android 原生只支持某些类型的格式。这是这里的列表。

确保支持视频和音频编码类型。仅仅因为它说“mp4”并不意味着它应该可以播放。

于 2013-07-01T08:14:42.950 回答
22

像这样使用:

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 中的服务器端错误。并参考这个。希望这会给你一些解决方案。

于 2013-07-01T14:50:52.663 回答
6

检查您正在渲染的视频的格式。mp4 格式的渲染从 API 级别 11 开始,格式必须为 mp4(H.264)

我遇到了同样的问题,在我点击格式之前我必须将我的视频转换为多种格式:使用总视频转换器将视频转换为 mp4。它就像一个魅力。

于 2015-11-07T19:43:40.060 回答
3

我不确定这是问题所在,但对我有用的是在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)
     {
          mVideoView.start();
     }
});
于 2016-05-14T11:49:44.530 回答
1

在 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()
    }
于 2020-07-23T06:28:47.933 回答