简体   繁体   English

在videoview android中播放视频

[英]Playing video in videoview android

I am trying to play a video in a video view. 我正在尝试在视频视图中播放视频。 The xml code contains the video view as: xml代码包含以下视频视图:

<VideoView
    android:id="@+id/vvIntroVideo"
    android:layout_width="wrap_content"
    android:layout_height="0dip"
    android:layout_weight="38" />

and in the Java part of code I have: 在Java代码的一部分中,我有:

public class LoginPage extends Activity {

private VideoView introVideoView;

private static String DEBUG = LoginPage.class.getSimpleName();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login_page);

    //initializing part
    introVideoView = (VideoView) findViewById(R.id.vvIntroVideo);

    try {
        introPlayer();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Log.v(DEBUG, e.getMessage().toString());
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.login_page, menu);
    return true;
}

public void introPlayer(){
    Uri video = Uri.parse("android:resource://"+getPackageName()+"/"+R.raw.documentariesandyou);
    introVideoView.setVideoURI(video);
    introVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer mp) {
            // TODO Auto-generated method stub
            mp.setLooping(true);
        }
    });
    introVideoView.start();
}
}

The application shows the error that the video cannot be played. 该应用程序显示无法播放视频的错误。 The video is in MP4 so there might not be problem in that. 视频在MP4中,因此可能没有问题。 Can anyone help me in this case. 在这种情况下,谁能帮助我。

First define ProgressDialog mProgressDialog; 首先定义ProgressDialog mProgressDialog;

Then try this code,it worked for me: 然后尝试这段代码,它为我工作:

video = (VideoView) findViewById(R.id.VideoView1);
        final MediaController mc = new MediaController(this);
        mc.setAnchorView(video);
        mc.setMediaPlayer(video);
        Uri uri = Uri.parse(path1);
        video.setMediaController(mc);
        System.out.println("!-- uri: "+uri.toString());
        video.setVideoURI(uri);

        video.setOnPreparedListener(new OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {



                   mProgressDialog.dismiss();






            }
        });

        video.start();

        video.setOnCompletionListener(new OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {

            }

        });


    }


    public void showLoaderProgress(){
        mProgressDialog = new ProgressDialog(this);
        mProgressDialog.setMessage("Loading Video\nPlease wait...");
        mProgressDialog.setIndeterminate(true);
        mProgressDialog.setCancelable(false);
        mProgressDialog.show();
    }

where path1 is your video path. 其中path1是您的视频路径。

As you are a beginer i am giving you code to play video in videoview,this will play both videos from raw folder as well from server url with live streaming. 由于您是一个初学者,我为您提供了在videoview中播放视频的代码,这将同时播放原始文件夹中的视频以及服务器URL中的实时流。 to play local just load URI to vieoview rest all thing are same.its very easy to understand.i hope it will help you. 播放本地内容只需将URI加载到vieoview,其余所有内容都是相同的。它非常容易理解。希望对您有所帮助。

globals in activity 全球活动

private MediaController controller;
ProgressBar progressBar = null;
private String _url;

Oncreate 创建时

 VideoView video = (VideoView) findViewById(R.id.videoView1);
    controller = new MediaController(VideoScreen.this);
    video.setMediaController(controller);

    video.setVideoPath(_url);
    video.requestFocus();
    video.start();
    progressBar.setVisibility(View.VISIBLE);
    video.setOnPreparedListener(new OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            // TODO Auto-generated method stub
            mp.start();
            progressBar.setVisibility(View.GONE);
            mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() {
                @Override
                public void onVideoSizeChanged(MediaPlayer mp, int arg1,
                        int arg2) {
                    progressBar.setVisibility(View.GONE);
                    mp.start();
                }
            });

        }
    });

I found the solution. 我找到了解决方案。 Actually the problem was in encoding of video. 实际上,问题出在视频编码中。 I was using gingerbread emulator to test application and the video was in mp4 h.264. 我正在使用姜饼模拟器测试应用程序,而视频是在mp4 h.264中。 But it seems gingerbread is capable in playing mp4 or 3gpp h.263 only in default. 但是,姜饼似乎只能在默认情况下播放mp4或3gpp h.263。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM