如何通过视频链接在Android中播放视频
如何通过传递任何视频链接(例如“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();
}
});
错误。
你给的网页的URL不是视频网址这个工作我来试试这个网址。
是的,现在它的工作。但是,我如何能够像这样获得直接链接,例如从youtube中的任何视频中获取? – Vaniusha
keepvid.com在这里你可以得到直接的网址。你也可以通过从台式机或笔记本电脑上的移动网站下载视频直接获得网址。对于youtube,您可以右键点击视频并选择复制视频网址。 –
你可以试试这个代码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);
}
}
我在尝试使用您的代码运行我的应用程序时出现错误 – Vaniusha
应设置直接链接到视频(不链接以视频页) – DeKaNszn
您shold提供堆栈跟踪,而不是它的屏幕截图。 – JFPicard
@DeKaNszn我添加的链接不是视频的直接链接? – Vaniusha