9

私は困惑しています。

Media Player でビデオを再生しようとしていますが、オーディオの再生中に黒いウィンドウしか表示されません。

この問題に関する他の投稿を見たことがありますが、解決策を見つけることができませんでした。私は彼らの提案に従おうとしました。

メディアプレーヤーは、再生前に準備されます。サーフェス ホルダーが作成され、再生前にメディア プレーヤーのディスプレイに設定されました。

Samsung Galaxy Tab と Samsung Galaxy S でテスト済み。

API レベル 7 に対してコンパイルしています。

ビデオ自体は、SD カードからデバイスのビデオ アプリケーションで再生できるため、互換性があるはずです。

表面ビューはビデオと同じサイズではありません。だから、それは問題かもしれません。それについて何かする必要がありますか、それとも自動的にストレッチが処理されますか?

これが私の初期化にあるものです:

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(width, height);
lp.leftMargin = x;
lp.topMargin = y;
mSurfaceView = new SurfaceView(mActivity);
mSurfaceView.requestFocus();
mSurfaceView.setZOrderOnTop(true);
mSurfaceView.getHolder().addCallback(player);
mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mLayout.addView(mSurfaceView, lp);

mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(assetDescriptor.getFileDescriptor(), assetDescriptor.getStartOffset(), assetDescriptor.getLength());
mMediaPlayer.setOnErrorListener(player);
mMediaPlayer.setOnPreparedListener(player);
mMediaPlayer.prepare();                    

ここに私のコールバックがあります:

public void onPrepared(MediaPlayer mp)
{
    mMediaPlayer.start();
}


public void surfaceCreated (SurfaceHolder holder)
{
    mMediaPlayer.setDisplay(holder);
}

イライラするのは、コードのバージョンが少し前は正しく機能していたのに、現在は機能していないことです。

4

1 に答える 1

0

同様の問題があり、ビデオ形式 (コーデック MP4、WMV、AVI など) に関連していました。

Android のデフォルト プレーヤーでビデオを実行してみて、動作するかどうかを確認してください。動作しない場合は、ビデオ コーデックに問題がある可能性があります。

VLC や Player MX などのプレーヤーでビデオを実行しようとしないでください。コーデックが埋め込まれています。

于 2014-11-17T11:50:30.187 に答える