在我的活动中,我已经解析了json的视频链接并尝试打开它,但它显示无法播放此视频,任何人都可以帮我解决这个问题。
我已发布我的logcat,我想播放此链接
03-21 18:11:47.250:I / System.out(18172):final url ----- http://www.youtube.com/watch?v=KhyWgC2z24s
package com.example.list;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class Videoview extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.videoview);
VideoView VideoView = (VideoView) findViewById(R.id.aboutVideoView);
Intent v=getIntent();
String videoPath=v.getExtras().getString("vvalue");
VideoView.setVideoURI(Uri.parse(videoPath));
VideoView.setMediaController(new MediaController(this));
VideoView.setVisibility(1);
VideoView.bringToFront();
VideoView.requestFocus();
VideoView.start();
}
}
03-21 18:33:17.140: I/System.out(21624): pathhttp://www.youtube.com/watch?v=KhyWgC2z24s
03-21 18:33:17.260: I/(21624): ION_IOC_IMPORT success d15d61c0,phy addr = 8f445000
03-21 18:33:17.300: V/MediaPlayer-JNI(21624): native_setup
03-21 18:33:17.320: V/MediaPlayer(21624): constructor
03-21 18:33:17.330: V/MediaPlayer(21624): setListener
03-21 18:33:17.330: I/MediaPlayer(21624): path is null
03-21 18:33:17.350: D/MediaPlayer(21624): Couldn't open file on client side, trying server side
03-21 18:33:17.390: V/MediaPlayer(21624): setVideoSurfaceTexture
03-21 18:33:17.390: V/MediaPlayer-JNI(21624): setAudioStreamType: 3
03-21 18:33:17.390: V/MediaPlayer(21624): MediaPlayer::setAudioStreamType
03-21 18:33:17.390: V/MediaPlayer(21624): setVideoSurfaceTexture
03-21 18:33:17.400: V/MediaPlayer(21624): prepareAsync
03-21 18:33:17.550: I/(21624): ION_IOC_IMPORT success db94bd40,phy addr = 8f5bc000
03-21 18:33:17.560: I/(21624): ION_IOC_FREE success db724a80,phy addr = 8f157000
03-21 18:33:17.560: I/(21624): ION_IOC_FREE success c92ca580,phy addr = 8f733000
03-21 18:33:17.560: I/(21624): ION_IOC_FREE success c8f93700,phy addr = 8ee69000
03-21 18:33:17.560: I/(21624): ION_IOC_FREE success c8f93180,phy addr = 8efe0000
03-21 18:33:20.210: V/MediaPlayer(21624): message received msg=100, ext1=1, ext2=-2147483648
03-21 18:33:20.210: E/MediaPlayer(21624): error (1, -2147483648)
03-21 18:33:20.210: V/MediaPlayer(21624): callback application
03-21 18:33:20.210: V/MediaPlayer(21624): back from callback
03-21 18:33:20.210: E/MediaPlayer(21624): Error (1,-2147483648)
03-21 18:33:20.220: D/VideoView(21624): Error: 1,-2147483648
03-21 18:35:14.390: I/(21624): ION_IOC_IMPORT success db6d6480,phy addr = 8ee69000
答案 0 :(得分:0)
试试这个:
package com.example.videoplayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.MediaController;
import android.widget.VideoView;
import android.util.Log;
import android.media.MediaPlayer;
public class VideoPlayerActivity extends Activity {
String TAG = "com.example.VideoPlayer";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_player);
final VideoView videoView = (VideoView)
findViewById(R.id.videoView1);
videoView.setVideoPath(
"http://www.ebookfrenzy.com/android_book/movie.mp4");
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
videoView.setOnPreparedListener(new
MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
Log.i(TAG, "Duration = " + videoView.getDuration());
}
});
videoView.start();
}
.
.
.
}
答案 1 :(得分:0)
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.PixelFormat;
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.DisplayMetrics;
import android.view.Menu;
import android.widget.MediaController;
import android.widget.VideoView;
enter code here
public class Videoplay extends Activity {
VideoView video;
private String current;
String path = "";
ProgressDialog progressDialog;
MediaController mediaController;
float scale;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_videoplay);
setupUI();
progressDialog = ProgressDialog.show(Videoplay.this, "",
"Buffering video...", true);
progressDialog.setCancelable(false);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
scale = (metrics.heightPixels * 1.0f) / (metrics.widthPixels * 1.0f);
PlayVideo();
/*
* runOnUiThread(new Runnable(){ public void run() { playVideo();
*
* }
*
* });
*/
}
private void setupUI() {
video = (VideoView) findViewById(R.id.videoView);
Intent data = getIntent();
path = data.getStringExtra("path");
mediaController = new MediaController(Videoplay.this);
}
/*
* private void playVideo() { try { System.out.println("calll===?"+path);
* Log.v("e", "path: " + path); if (path == null || path.length() == 0) {
* Toast.makeText(Videoplay.this, "File URL/path is empty",
* Toast.LENGTH_LONG).show(); } else { // If the path has not changed, just
* start the media player if (path.equals(current) && video != null) {
* video.start(); video.requestFocus(); return; } ///getDataSource(path)
* current = path; video.setZOrderOnTop(true);
* //video.setVideoPath("http://www.semanticdevlab.com/abc.mp4");
* video.setVideoPath(path); video.requestFocus();
* video.setMediaController(mediaController); video.start(); } } catch
* (Exception e) { Log.e("e", "error: " + e.getMessage(), e); if (video !=
* null) { video.stopPlayback(); } } }
*/
@SuppressLint("NewApi")
private void PlayVideo() {
try {
getWindow().setFormat(PixelFormat.TRANSLUCENT);
MediaController mediaController = new MediaController(
Videoplay.this);
mediaController.setAnchorView(video);
System.out.println("path" + path);
Uri video1 = Uri.parse(path);
video.setMediaController(mediaController);
video.setVideoURI(video1);
//video.setScaleX(scale);
video.requestFocus();
video.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
Videoplay.this.finish();
}
});
video.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
progressDialog.dismiss();
video.start();
}
});
video.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
// TODO Auto-generated method stub
progressDialog.dismiss();
showDialog("This video can't play", Videoplay.this);
return true;
}
});
} catch (Exception e) {
progressDialog.dismiss();
System.out.println("Video Play Error :" + e.toString());
finish();
}
}
public void showDialog(String message, Context context) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context);
alertDialogBuilder.setTitle("Notification !");
alertDialogBuilder.setMessage(message).setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
finish();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.videoplay, menu);
return true;
}
@Override
public void onBackPressed() {
try {
if (video.isPlaying()) {
video.stopPlayback();
}
} catch (Exception e) {
e.printStackTrace();
}
super.onBackPressed();
}
}