繁体   English   中英

在videoview android中播放视频

[英]Playing video in videoview android

我正在尝试在视频视图中播放视频。 xml代码包含以下视频视图:

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

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

该应用程序显示无法播放视频的错误。 视频在MP4中,因此可能没有问题。 在这种情况下,谁能帮助我。

首先定义ProgressDialog mProgressDialog;

然后尝试这段代码,它为我工作:

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

其中path1是您的视频路径。

由于您是一个初学者,我为您提供了在videoview中播放视频的代码,这将同时播放原始文件夹中的视频以及服务器URL中的实时流。 播放本地内容只需将URI加载到vieoview,其余所有内容都是相同的。它非常容易理解。希望对您有所帮助。

全球活动

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

创建时

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

        }
    });

我找到了解决方案。 实际上,问题出在视频编码中。 我正在使用姜饼模拟器测试应用程序,而视频是在mp4 h.264中。 但是,姜饼似乎只能在默认情况下播放mp4或3gpp h.263。

暂无
暂无

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

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