【问题标题】:Android VideoView Cannot play video mp4Android VideoView 无法播放视频mp4
【发布时间】:2012-11-07 05:17:06
【问题描述】:

我使用 Android VideoView 通过 HTTP 播放视频文件。我的问题是我的手机提示“无法播放视频对不起,此视频无法播放”。从 HTTP 播放 mp4 文件时。但是播放另一个 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?

感谢您的建议。

【问题讨论】:

    标签: android video mp4 android-videoview


    【解决方案1】:

    感谢Android MediaPlayer error (1, -2147483648)的回答。

    我发现视频文件 2 是在 H.264 Main Profile 中编码的,我的手机无法播放。 Android Supported Media Format 在基线配置文件中建议 H.264。所以把视频转换成Baseline Profile后,就可以在我的手机上播放了。

    【讨论】:

    • 感谢您的提问和回答,我也在尝试在 videoview 上播放视频,但遇到了同样的问题,我不明白 Main Profile 和 Baseline Profile 是什么意思?我如何以及在哪里可以找到更多关于它们的信息?提前致谢
    • 你在运行时转换了吗?
    • @tim 你能回答 rudis 的问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    相关资源
    最近更新 更多