簡體   English   中英

videoView Android無法播放視頻

[英]Video can not be played by videoView Android

我正在開發視頻播放器應用。 我希望此應用程序在從SD卡,相冊或手機的任何文件夾中選擇視頻時顯示為選項。 當我選擇我的視頻播放器播放視頻時,它需要應用程序,但視頻不播放。 我已經允許在manifest中讀寫外部存儲。這是我的代碼:

 Intent in =getIntent();
 file_path = in.getData().getPath();
 System.out.println("file path from sdcard:"+file_path);
  videoView =(VideoView)findViewById(R.id.video);

   MediaController mediaController= new MediaController(this);
    mediaController.setAnchorView(videoView);        
     Uri uri=Uri.parse(file_path);        
     videoView.setVideoURI(uri);        
     videoView.requestFocus();
         videoView.start();

錯誤:

 10-19 10:39:40.917: I/System.out(20430): file path from sdcard:/external/video/media/24363
 10-19 10:39:40.987: E/MediaPlayer(20430): Uri is  <URL suppressed>
 10-19 10:39:40.997: E/MediaPlayer(20430): error (1, -2147483648)
 10-19 10:39:41.017: E/MediaPlayer(20430): Error (1,-2147483648)
 10-19 10:39:41.017: D/VideoView(20430): Error: 1,-2147483648

編輯:測試手機:Android 4.1與32Gb內置內存,沒有Sdcard。

答案就在這里

 public String getRealPathFromURI(Uri contentUri) {
    String[] proj = { MediaStore.Video.Media.DATA };
    Cursor cursor = managedQuery(contentUri, proj, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

我有同樣的問題,沿着許多不同的路徑修復它,最終最終工作的是以下代碼塊:

/* inside onCreate */
VideoView videoView = (VideoView)findViewById(R.id.loginVideoBackground);
videoView.setVideoURI(Uri.parse("android.resource://" + this.getPackageName() + "/raw/lights"));
videoView.start();

我曾經嘗試過:

  • 擴展SurfaceView
  • 使用@brinda上面給出的答案(導致NullPointerException
  • 以及StackOverflow答案的各種其他排列

....有時候更簡單更好

/external/video/media/24363不正確,請檢查。 本地路徑必須訪問..eg / sdcard / video / media / ..

videoView.setVideoPath("http://www.ebookfrenzy.com/android_book/movie.mp4");        MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
videoView.start();

說實話,我在過去和每個帳戶都經歷過類似的問題,我最終發現最好的解決方案是直接擴展SurfaceView。 編寫的代碼數量驚人,並且可以輕松(相對而言)根據您的要求進行有效定制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM