2012-11-19 294 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