视频不会在Android上显示音频

时间:2017-05-15 19:03:17

标签: java android video media-player

我正在尝试在屏幕中间显示视频,但我只能听到音频,而且没有视频。 我在framelayout添加了按钮但显示了按钮(视频不是) 这是我的xml

 <FrameLayout
    android:layout_width="776dp"
    android:layout_height="365dp"
    android:layout_gravity="center"

    android:id="@+id/videoLayout"
    android:visibility="gone">

    <SurfaceView
        android:id="@+id/arVideoView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:alpha="1"
        android:layout_gravity="center"
        />
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="bottom|center_horizontal">

        <Button
            android:text="Stop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/buttonStop"
            android:onClick="stopPlaying"/>

        <Button
            android:text="play"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/buttonPlay"
            android:layout_toRightOf="@+id/buttonStop"
            android:onClick="StartPlaying"/>

        <Button
            android:text="Start"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:id="@+id/buttonStart"
            android:layout_marginLeft="30dp"
            android:layout_marginStart="30dp"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/buttonPlay"
            android:onClick="MovieFromStart"/>

    </RelativeLayout>

</FrameLayout>

这是我的代码:

public boolean Run(Model currentModel, Activity act) {
    _act = act;

    final FrameLayout rlVideo = (FrameLayout) act.findViewById(R.id.videoLayout);
    final String str =  Environment.getExternalStorageDirectory()+ "/sfmModelTracker/ex3/Models/" + currentModel.id + "/"+ clip.VideoName;
    final SurfaceView tv = (SurfaceView) act.findViewById(R.id.arVideoView);
    tv.setZOrderOnTop(true);



    try {
        tv.setZOrderOnTop(true);
        player.setDataSource(str);
        tv.setZOrderOnTop(true);
        player.setDisplay(tv.getHolder());
        tv.setZOrderOnTop(true);

    } catch (Exception e) {
        e.printStackTrace();
    }

    player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer mp) {
            // Adjust the size of the video
            // so it fits on the screen


            int videoWidth = player.getVideoWidth();
            int videoHeight = player.getVideoHeight();
            float videoProportion = (float) videoWidth / (float) videoHeight;
            int screenWidth = rlVideo.getWidth();
            int screenHeight = rlVideo.getHeight();
            float screenProportion = (float) screenWidth / (float) screenHeight;
            android.view.ViewGroup.LayoutParams lp = tv.getLayoutParams();

            if (videoProportion > screenProportion) {
                lp.width = screenWidth;
                lp.height = (int) ((float) screenWidth / videoProportion);
            } else {
                lp.width = (int) (videoProportion * (float) screenHeight);
                lp.height = screenHeight;
            }


            tv.setLayoutParams(lp);


            if (!player.isPlaying()) {
                player.start();

                tv.setZOrderOnTop(true);
            }


        }
    });
    player.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
    {

        @Override
        public void onCompletion(MediaPlayer mp)
        {
            ScreenManager.getInstance( null ).StopPlaying();
        }
    });
    tv.setZOrderOnTop(true);
    try {
        player.prepare();
        tv.setZOrderOnTop(true);
        rlVideo.setVisibility( View.VISIBLE );
        //rl.setVisibility(View.VISIBLE);
        tv.setVisibility( View.VISIBLE );
    } catch (IOException e) {
        e.printStackTrace();
    }
    //player.start();


    //tv.sur

    return false;

}
我做错了什么? (我已经尝试过设置Z - 没有工作)

谢谢你!

1 个答案:

答案 0 :(得分:0)

尝试使用以下代码段。

VideoView play = (VideoView) view.findViewById(R.id.play);
                    MediaController mediaController = new MediaController(mContext);
                    mediaController.setAnchorView(play);
                    Uri video = Uri.parse("");
                    play.setMediaController(mediaController);
                    play.setVideoURI(video);
                    play.start();
                    play.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            if (play.isPlaying()) {
                                play.pause();

                            } else if (!play.isPlaying()) {
                                play.start();
                            }

                        }
                    });

xml将是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"

            <VideoView
                android:id="@+id/play"
                android:layout_width="match_parent"
                android:layout_height="@dimen/height" />


</LinearLayout>