【问题标题】:How to play .mp4 video in videoview in android?如何在 android 的 videoview 中播放 .mp4 视频?
【发布时间】: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 得到这个错误

标签: android video-streaming mp4 android-videoview


【解决方案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 得到这个错误
      • 错误信息“无法播放此视频”
      猜你喜欢
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-16
      • 2012-05-11
      • 2013-05-18
      相关资源
      最近更新 更多