9

Android VideoView を使用して、HTTP 経由でビデオ ファイルを再生しました。私の問題は、電話で「ビデオを再生できません。申し訳ありませんが、このビデオは再生できません」というメッセージが表示されることです。HTTP から mp4 ファイルを再生する場合。ただし、別の mp4 ビデオ ファイルを再生する場合は問題ありません。

Samsung Galaxy S などの新しい携帯電話で使用すると、私のプログラムは両方の mp4 ビデオ ファイルを HTTP から正常に再生できます。

私の電話:

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 を携帯電話で再生するにはどうすればよいですか?

アドバイスありがとうございます。

4

1 に答える 1

13

Android MediaPlayer error (1, -2147483648)からの回答ありがとうございます。

動画ファイル 2 が H.264 メイン プロファイルでエンコードされているため、携帯電話で再生できないことがわかりました。Android がサポートするメディア形式は、ベースライン プロファイルで H.264 を示唆しています。ビデオをベースライン プロファイルに変換すると、携帯電話で再生できるようになります。

于 2012-11-21T05:00:42.190 に答える