2009-09-15 49 views
2

我使用下面的代碼來顯示在android模擬器中的視頻文件,它工作正常時,視頻文件存儲在SDcard.But當我給任何網址的視頻代碼不工作。如何從遠程URL顯示Android模擬器中的視頻?

import android.app.Activity; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.SurfaceHolder; 
import android.view.View; 
import android.widget.*; 

public class playerActivity extends Activity 
{ 
Button b; 
VideoView preview; 
SurfaceHolder holder; 
MediaPlayer mp; 

private String path = "/data/data/payoda.android/funny.mp4"; 

//private String path = "http://www.daily3gp.com/vids/3.3gp"; 

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    preview=(VideoView)findViewById(R.id.surface); 
    holder=preview.getHolder(); 
    b=(Button)findViewById(R.id.cmd_play); 
    b.setOnClickListener(new View.OnClickListener() 
    { 
    public void onClick(View v) 
    { 
     try 
     { 
       mp=new MediaPlayer(); 
       mp.setDataSource(path); 
       mp.setScreenOnWhilePlaying(true); 
       mp.setDisplay(holder); 
       mp.prepare(); 
       mp.start(); 
     } 
     catch(Exception e) 
     { 

     } 
    } 
    }); 
} 
} 

異常thorwn是:

prepare failed: 
status=0xC8 

的logcat的細節爲:

09-16 12:16:36.729: ERROR/PlayerDriver(542): Command PLAYER_INIT completed with an error or info PVMFErrContentInvalidForProgressivePlayback 
09-16 12:16:36.739: ERROR/MediaPlayer(2867): error (200, -27) 

在上面的代碼,如果改變路徑變量模擬器屏幕是黑的單button.May是我必須做更多的事情來顯示從遠程URL的視頻,我不知道該怎麼做。任何人有任何想法,請幫助我。

回答

4

首先,不要使用仿真器來測試視頻播放。它處理視頻播放的能力非常有限。使用實際的Android設備。

其次,在遇到多媒體問題時,請始終檢查LogCat(adb logcat,DDMS或Eclipse中的DDMS透視圖)以獲取警告。 OpenCORE-- Android使用的多媒體引擎 - 傾向於將錯誤級別的條件記錄爲警告。

例如,您的視頻文件可能沒有設置爲HTTP流傳輸所需的漸進式下載。在Linux上,您可以通過安裝MP4Box並運行MP4Box -hint <file>來修補MP4視頻以進行漸進式下載。

0

您還應該使用prepareAsync()方法而不是prepare()。使用prepare()是一個阻塞調用(UI被鎖定),而prepareAsync不是阻塞調用。

+0

prepareAsync()也無法正常工作。其他選項 – Rajapandian

2

,你應該在你的模擬器 創建一個SD卡,然後你的路徑更改您的Eclipse窗口查看到DDMS chaange到MNT/SD卡,並把你的文件到設備 動作BUTTOM是DDMS的右 - 上,它是一個電話圖標

然後改變你的.java路徑

private String path = "mnt/sdcard/funny.mp4"; 

你應該就可以正常工作。

相關問題