无法在Android中打开视频链接

时间:2014-03-21 12:13:06

标签: android video android-videoview

在我的活动中,我已经解析了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

2 个答案:

答案 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();
}

}