无法在android的videoview中播放来自url的视频如何在videoview中播放来自URL的视频?

Posted

技术标签:

【中文标题】无法在android的videoview中播放来自url的视频如何在videoview中播放来自URL的视频?【英文标题】:Unable to play video from url in videoview in android How to play video from URL in videoview? 【发布时间】:2020-07-14 10:55:22 【问题描述】:

我正在尝试使用VideoViewandroid 中实现视频播放器。我在服务器上上传了视频我正在从服务器获取视频并尝试在VIdeoView 中播放我已成功获取视频但无法在播放器中播放。

下面是我的代码:

    MediaController mediacontroller = new MediaController(getActivity());
    mediacontroller.setAnchorView(videoView);

    videoView.setMediaController(mediacontroller);
   
    videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
        @Override
        public void onCompletion(MediaPlayer mp) 
        
            videoView.setVideoURI(Uri.parse(video_url));
         
            videoView.start();
        
    );

    videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() 
        @Override
        public boolean onError(MediaPlayer mp, int what, int extra) 

            Toast.makeText(getActivity(),"Error",Toast.LENGTH_SHORT).show();
            return false;
        
    );

有人请让我知道我做错了什么。任何帮助将不胜感激。

谢谢

【问题讨论】:

【参考方案1】:

在将媒体控制器设置为这样的视频视图之前,您还需要设置视频路径 url

Uri uri = Uri.parse(path);
           videoView.setVideoURI(uri);
           videoView.start();

示例

     videoView.setVideoURI(Uri.parse(video_url));       
      videoView.start();
     MediaController mediacontroller = new MediaController(getActivity());
        mediacontroller.setAnchorView(videoView);
    
        videoView.setMediaController(mediacontroller);
       ProgressBar progressBar =findViewById(R.id.progressbar);
        progressBar.setVisibility(View.VISIBLE);
        videoView.setOnCompletionListener(new     MediaPlayer.OnCompletionListener() 
            @Override
            public void onCompletion(MediaPlayer mp) 
            
               
            
        );
    
        videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() 
            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) 
    
                Toast.makeText(getActivity(),"Error",Toast.LENGTH_SHORT).show();
                return false;
            
        );
   videoView.setOnPreparedListener(new OnPreparedListener() 
            @Override
            public void onPrepared(MediaPlayer mp) 
                // TODO Auto-generated method stub
                mp.start();
                mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() 
                    @Override
                    public void onVideoSizeChanged(MediaPlayer mp, int arg1,
                            int arg2) 
                        // TODO Auto-generated method stub
                        progressBar.setVisibility(View.GONE);
                        mp.start();
                    
                );
            
        );

像这样在xml 中添加这个progressbar 小部件

<ProgressBar
        android:id="@+id/progressbar"
        android:layout_
        android:layout_
        android:layout_centerInParent="true"
        android:visibility="gone" />

更新:- 在播放视频时添加进度条

【讨论】:

更新代码,试试看,然后点击我的答案上的勾号图标确认

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

为啥 Android 中的 VideoView 需要花费太多时间来加载和播放来自 http 链接的视频?

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

无法播放视频 VideoView Android 12(错误 (1, -2147483648))

无法在 VideoView 中播放视频 - 为啥?

无法让 Vitamio VideoView 播放普通 Android VideoView 会播放的视频文件

Android:无法使用 videoview 播放视频