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

Posted

技术标签:

【中文标题】如何在 android 的 videoview 中播放 .mp4 视频?【英文标题】:How to play .mp4 video in videoview in android? 【发布时间】:2013-06-28 06:31:38 【问题描述】:

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

【问题讨论】:

可能不支持特定的 mp4 编码。我在单独的答案中回答。要测试你可以尝试另一个 mp4,例如这个对我有用:archive.org/download/Pbtestfilemp4videotestmp4/video_test.mp4 我也这样做,但我仍然无法播放 .mp4 视频 08-12 14:37:30.599: D/MediaPlayer(23633): 无法在客户端打开文件,正在尝试服务器端 08- 12 14:37:33.095: E/MediaPlayer(23633): 错误 (1, -2147483648) 08-12 14:37:33.096: E/MediaPlayer(23633): 错误 (1,-2147483648) 08-12 14:37 :33.096: D/VideoView(23633): Error: 1,-2147483648 得到这个错误 【参考方案1】:

终于对我有用了。

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

【讨论】:

sn-p上面的mp是什么?? 它是一个媒体播放器的对象。 @HirenPatel 但最初它显示黑屏。【参考方案2】:

我不确定这是不是问题,但对我有用的是调用 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();
     
);

【讨论】:

【参考方案3】:

在 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()
    

【讨论】:

【参考方案4】:

MP4 只是一个容器——它里面的视频和音频流都会被编码成不同的格式。

Android 本身仅支持某些类型的格式。 This is the list here.

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

【讨论】:

那么,如何知道/设置视频编码技术【参考方案5】:

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

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

【讨论】:

我遇到了同样的问题,我必须先将我的视频转换为多种格式,然后才能点击格式:使用总视频转换器将视频转换为 mp4。相信我,它就像魅力一样 根据 android 纪录片 mp4 仅支持 API Level 11 (Gingerbread) 下次请在增强时编辑您的答案,而不是添加 cmets。我已经为你转移了其中一个 cmets。【参考方案6】:

这样使用:

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。 希望这会给你一些解决方案。

【讨论】:

我也这样做,但我仍然无法播放 .mp4 视频 08-12 14:37:30.599: D/MediaPlayer(23633): 无法在客户端打开文件,正在尝试服务器端 08- 12 14:37:33.095: E/MediaPlayer(23633): 错误 (1, -2147483648) 08-12 14:37:33.096: E/MediaPlayer(23633): 错误 (1,-2147483648) 08-12 14:37 :33.096: D/VideoView(23633): Error: 1,-2147483648 得到这个错误 错误信息“无法播放此视频”

以上是关于如何在 android 的 videoview 中播放 .mp4 视频?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 中对 VideoView 执行放大/缩小?

如何在android中播放视频时拍摄videoview的快照?

如何检测 VideoView 何时开始播放(Android)?

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

Android 如何更改默认 VideoView / MediaPlayer 全屏?

如何在 Android Studio VideoView 中自动重播视频