2017-07-14 162 views
0

如何通過傳遞任何視頻鏈接(例如「https://youtu.be/SiD77g9KfhA」或它可以是來自其他媒體門戶的另一個視頻鏈接)來在Android中播放視頻。我試圖做到這一點,但我得到一個錯誤。如何通過視頻鏈接在Android中播放視頻

我的代碼

try { 
       if (!mVideoView.isPlaying()) { 
        Uri uri = Uri.parse(videoURL); 
        mVideoView.setVideoURI(uri); 
        mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
         @Override 
         public void onCompletion(MediaPlayer mp) { 

         } 
        }); 
       } else { 
        mVideoView.pause(); 
       } 
      }catch (Exception ex){ 

      } 
      mVideoView.requestFocus(); 
      mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
       @Override 
       public void onPrepared(MediaPlayer mp) { 
        mProgressDialog.dismiss(); 
        mp.setLooping(true); 
        mVideoView.start(); 
       } 
      }); 

錯誤。

enter image description here

+2

應設置直接鏈接到視頻(不鏈接以視頻頁) – DeKaNszn

+1

您shold提供堆棧跟蹤,而不是它的屏幕截圖。 – JFPicard

+0

@DeKaNszn我添加的鏈接不是視頻的直接鏈接? – Vaniusha

回答

0
+0

是的,現在它的工作。但是,我如何能夠像這樣獲得直接鏈接,例如從youtube中的任何視頻中獲取? – Vaniusha

+0

keepvid.com在這裏你可以得到直接的網址。你也可以通過從臺式機或筆記本電腦上的移動網站下載視頻直接獲得網址。對於youtube,您可以右鍵點擊視頻並選擇複製視頻網址。 –

0

你可以試試這個代碼snippet。我在我的應用程序中使用此代碼以landscape模式播放視頻。

package xyz.abc.package; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.content.pm.ActivityInfo; 
import android.media.MediaPlayer; 
import android.media.MediaPlayer.OnCompletionListener; 
import android.media.MediaPlayer.OnPreparedListener; 
import android.net.Uri; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.MediaController; 
import android.widget.VideoView; 

public class FullVideo extends Activity { 

    ProgressDialog pDialog; 
    VideoView videoview; 
    private int position = 0; 
    String videoUrl, imageUrl, cid; 

    private MediaController mediaControls; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setContentView(R.layout.full_video); 

     videoUrl = "https://youtu.be/SiD77g9KfhA" 

     if (mediaControls == null) { 
      mediaControls = new MediaController(FullVideo.this); 
     } 

     videoview = (VideoView) findViewById(R.id.videoView); 
     // Execute StreamVideo AsyncTask 

     // Create a progressbar 
     pDialog = new ProgressDialog(FullVideo.this); 
     // Set progressbar title 
     pDialog.setTitle("Streaming video, please wait."); 
     // Set progressbar message 
     pDialog.setMessage("Buffering..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(false); 
     // Show progressbar 
     pDialog.show(); 

     try { 

      mediaControls.setAnchorView(videoview); 
      // Get the URL from String VideoURL 
      Uri video = Uri.parse(videoUrl); 
      videoview.setMediaController(mediaControls); 
      // mediaControls.setMediaPlayer(videoview); 
      videoview.setVideoURI(video); 

     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 

     videoview.setOnPreparedListener(new OnPreparedListener() { 
      // Close the progress bar and play the video 
      public void onPrepared(MediaPlayer mp) { 
       pDialog.dismiss(); 
       videoview.requestFocus(); 
       videoview.seekTo(position); 
       if (position == 0) { 
        videoview.start();     
       } else { 
        videoview.pause(); 
       } 
      } 
     }); 

     videoview.setOnCompletionListener(new OnCompletionListener() { 

      @Override 
      public void onCompletion(MediaPlayer mp) { 
       // TODO Auto-generated method stub 
       finish(); 

      } 
     }); 

    } 

    @Override 
    public void onBackPressed() { 
     // TODO Auto-generated method stub 
     super.onBackPressed(); 
      finish(); 

    } 

    @Override 
    protected void onStart() { 
     // TODO Auto-generated method stub 
     super.onStart(); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } 

    @Override 
    protected void onRestart() { 
     // TODO Auto-generated method stub 
     super.onRestart(); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     // TODO Auto-generated method stub 
     super.onSaveInstanceState(outState); 
     outState.putInt("Position", videoview.getCurrentPosition()); 
     videoview.pause(); 

    } 

    @Override 
    protected void onRestoreInstanceState(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onRestoreInstanceState(savedInstanceState); 
     position = savedInstanceState.getInt("Position"); 
     videoview.seekTo(position); 
    } 

} 
+0

我在嘗試使用您的代碼運行我的應用程序時出現錯誤 – Vaniusha