2012-11-19 233 views
9

我使用Android VideoView通過HTTP播放視頻文件。我的問題是我的手機提示「無法播放視頻對不起,此視頻無法播放。」當從HTTP播放mp4文件時。但播放另一個mp4視頻文件時可以。Android VideoView無法播放視頻mp4

當用於新手機,如三星Galaxy S,我的程序可以從HTTP成功播放兩個mp4視頻文件。

我的電話:

Samsung GT-S5830 
Android version: 2.3.4 
Display: 320x480. 

Video file 1 (OK): 
Video Codec: H.264 
Resolution: 640x360 
Others: 16:9, 340kbps, 29.92fps 
Audio Codec: AAC, 44kHz 96kbps Stereo. 


Video file 2 (Fail): 
Video Codec: H.264 
Resolution: 640x360 
Others: 16:9, 993kbps, 25fps 
Audio Codec: AAC 44kHz 125kbps Stereo. 

下面是我的代碼,硬編碼播放視頻文件1成功。

public class VideoPlayActivity extends Activity { 
VideoView vv; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    //requestWindowFeature(Window.FEATURE_NO_TITLE); 
    //getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    vv = new VideoView(this); 
    RelativeLayout.LayoutParams param1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); 
    param1.addRule(RelativeLayout.CENTER_IN_PARENT); 
    vv.setOnErrorListener(new OnErrorListener() { 

     public boolean onError(MediaPlayer mp, int what, int extra) { 
      Log.d("Dbg", "OnErrorListener: onError: " + what + ", " + extra); 
      return false; 
     } 

    }); 

    RelativeLayout layout = new RelativeLayout(this); 
    layout.addView(vv, param1); 

    setContentView(layout); 

    playContent(); 

} 

private void playContent() { 
    String path = "http://rmcdn.2mdn.net/MotifFiles/html/1248596/android_1330378998288.mp4"; 

    vv.setVideoPath(path); 
    vv.requestFocus(); 
    vv.start(); 
    } 
} 

當播放視頻文件2是作爲​​下面的錯誤日誌:

11-19 17:49:30.119: I/VideoView(16860): start() 
11-19 17:49:30.139: E/MediaPlayer(16860): error (1, -2147483648) 
11-19 17:49:30.149: E/MediaPlayer(16860): Error (1,-2147483648) 
11-19 17:49:30.149: D/VideoView(16860): Error: 1,-2147483648 
11-19 17:49:30.149: D/Dbg(16860): OnErrorListener: onError: 1, -2147483648 

值得注意的是,我試圖安裝MX播放器和下載的兩個視頻文件到我的手機的SD卡。 MX播放器可以成功播放兩個視頻文件。

那麼,誰能幫我回答以下問題:

  1. 爲什麼我的程序不能發揮出自己的手機上的視頻文件2?
  2. 如何在手機上播放視頻文件2?

謝謝您的建議。

回答

12

感謝您對Android MediaPlayer error (1, -2147483648)的回答。

我發現視頻文件2編碼在H.264 Main Profile中,我的手機無法播放。 Android Supported Media Format在Baseline Profile中建議H.264。所以在將視頻轉換爲Baseline Profile之後,可以在我的手機上播放。

+0

感謝您的問題和答案,我試圖在videoview上播放視頻,並且遇到了同樣的問題,我沒有明白您的主要配置文件和基準配置文件是什麼意思?如何以及在哪裏可以找到更多關於它們的信息在此先感謝 – Rudi

+10

你是如何設法將視頻轉換爲基準配置文件? – kabuto178

+0

您是否在運行時轉換它? – Jaydev