【问题标题】:Android : Video not playing in VideoviewAndroid:视频未在 Videoview 中播放
【发布时间】:2016-12-30 09:44:33
【问题描述】:

我正在尝试在视频视图中播放视频,但显示的是空白视频视图。视频视图位于弹出窗口内。视频存储在外部目录中,我使用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

【问题讨论】:

  • 文件路径是否正确
  • 是的,为了检查这一点,我将 if 条件放入代码中。
  • @sukumar 视频的 MIME 类型是 mp4。我使用 MediaMetadataRetriever 进行检查。
  • 检查基线配置文件中的视频格式并发送设备名称和型号。

标签: android android-videoview


【解决方案1】:

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

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

试试这个代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-18
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2012-11-07
    相关资源
    最近更新 更多