2016-12-30 148 views
0

我想播放videoview中的视频,但显示空白视频视图。视频视图位于弹出窗口内。该视频存储在外部目录中,我使用setVideoPath来传递文件路径。
它的Java代码:Android:视频不能播放Videoview

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 
+0

文件路径是否正确 –

+0

是的,为了检查,我把if条件放在代码中。 – ashwinx

+0

请检查视频格式https://www.macxdvd.com/mac-dvd-video-converter-how-to/supported-video-format-for-android.htm – sukumar

回答

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

试试这段代码

+0

它仍然显示空白的videoview。 – ashwinx

相关问题