Android:视频无法在Videoview中播放

时间:2016-12-30 09:44:34

标签: android android-videoview

我正在尝试在视频内播放视频,但显示空白视频视图。视频视图位于弹出窗口中。视频存储在外部目录中,我使用setVideoPath传递文件路径 它的java代码:

final View videoPopupView = getLayoutInflater().inflate(R.layout.popup_video_preview, null);

        Button cancelVideo = (Button)videoPopupView.findViewById(R.id.cancelVideo);
        Button confirmVideo = (Button)videoPopupView.findViewById(R.id.confirmVideo);
        final VideoView videoView = (VideoView)videoPopupView.findViewById(R.id.popupVideoView);

        final PopupWindow video_popup_window = new PopupWindow(videoPopupView,RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.MATCH_PARENT, true);

        if(new File(attachment_Path+attachment_Name).exists())
        {
            video_popup_window.showAtLocation(videoPopupView, 1, 0, 0);
            videoView.setVideoPath(attachment_Path+attachment_Name);
            if (mediaController == null) {
                mediaController = new android.widget.MediaController(MainActivity.this);
            }
            videoView.setMediaController(mediaController);

            videoView.requestFocus();
            videoView.start();
        }

弹出式布局如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#80000000">

    <VideoView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@+id/popupVideoView"
        android:background="@drawable/blackborder"
        android:layout_marginTop="25dp"
        android:layout_marginBottom="15dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="bottom"
        android:orientation="horizontal">

        <Button
            android:text="Cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/cancelVideo"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <Button
            android:text="Attach"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:id="@+id/confirmVideo"
            android:layout_alignParentBottom="true" />
    </LinearLayout>
</LinearLayout>


我已经提到了其他解决方案和教程,但它到处都是这样做的。有人能告诉我,我错过了什么?

编辑:
这是经过的文件路径:

/storage/emulated/0/Movies/issue_2016_12_30_15_31_13.mp4

EDIT2:
编解码器信息:

Stream 0
    Type: Video
    Codec: H264 - MPEG-4 AVC (part 10) (avc1)
    Language: English
    Resolution: 720x1280
    Frame rate: 5.564744
    Decoded format: Planar 4:2:0 YUV
Stream 1
    Type: Audio
    Codec: AMR narrow band (samr)
    Language: English
    Channels: Mono
    Sample rate: 8000 Hz
    Bits per sample: 32

1 个答案:

答案 0 :(得分:0)

您必须转到自定义对话框,添加此代码 -

Dialog mVideoDialog ;
VideoView mVideoFullScreen;
MediaController controller;
Create a method -

mVideoDialog = new Dialog(this);
    mVideoDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    mVideoDialog.setContentView(R.layout.dialog);
    mVideoDialog.setOnKeyListener(this);
    mVideoFullScreen = (VideoView)     mVideoDialog.findViewById(R.id.videoview1);
    controller = new MediaController(this);
    showVideo();
     }
//Show video method to play the video file -

public void showVideo() {
    // TODO Auto-generated method stub
     mVideoDialog.show();
     mVideoFullScreen.setVideoPath("file:///sdcard/video file name.m4v");
     controller.setMediaPlayer(mVideoFullScreen);
     mVideoFullScreen.setMediaController(controller);
     mVideoFullScreen.requestFocus();
     mVideoFullScreen.start();
    }

试试这段代码