如何在 android 的 videoview 中播放 .mp4 视频?

问题描述 投票:0回答:6

我正在开发视频播放器应用程序,我想在本地视频视图中播放

.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();
android video-streaming mp4 android-videoview
6个回答
41
投票

终于对我有用了。

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();
    }
});

31
投票

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

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

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


23
投票

像这样使用:

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


6
投票

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

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


3
投票

我不确定这是问题所在,但对我有用的是调用

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();
     }
});

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()
    }
© www.soinside.com 2019 - 2024. All rights reserved.