2

ビデオを再生するときに、prepareAsync() を使用してから、ビデオの準備ができたときに start() を呼び出すと、start() 呼び出しからビデオが実際に再生を開始するまでに約 250 ミリ秒かかります。それだけですか、それともここで何かおかしいことが起こっていますか? ビデオは raw ディレクトリにあることに注意してください。私のアクティビティの OnCreate には次のものがあります。

private VideoView vv;
private MediaPlayer mp = new MediaPlayer();
vv = (VideoView)findViewById(R.id.vv);
vv.getHolder().addCallback(this);
mp.reset();
mp.setDisplay( vv.getHolder() );
mp.setDataSource( this, Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.moviename) );
Log.d(TAG,"video is preparing");
mp.prepareAsync();

次に、リスナーがあります。

@Override
public void onPrepared(MediaPlayer arg0) {
   Log.d(TAG, "video is prepared");
   mp.start();
}

実際、私のコードはこれよりも複雑です。ユーザーはボタンをクリックしてビデオを再生し、別のビデオを選択することもできます。ビデオを隠している画像があり、mp.start() からの特定のミリ秒で、この画像を引き離してビデオを表示します。私のデバイスでは、これを 250 ミリ秒に設定して、ビデオ以外のものを確実に明らかにしないようにする必要があります (何かが黒いか、前に再生されたビデオの最後のフレームです)。

私が疑問に思っているのは、私の logcat から、これに何か問題があることがわかるかどうかです。ButtonBookActivity というタイトルではないメッセージに興味があります。彼らは正常ですか?これらはmp4です。この場合、ビデオの準備には 120 ミリ秒しかかからないことに注意してください。

04-15 13:30:05.600: D/ButtonBookActivity(1238): video is reset
04-15 13:30:05.620: I/NuCachedSource2(83): ERROR_END_OF_STREAM
04-15 13:30:05.630: D/AwesomePlayer(83): Failed to open file, all profile flags have to set through setprop method.
04-15 13:30:05.630: I/MPEG4Extractor(83):  NON-QT MODE DECIDED 
04-15 13:30:05.640: I/SampleTable(83): There are reordered frames present.
04-15 13:30:05.640: D/ButtonBookActivity(1238): video is preparing
04-15 13:30:05.640: I/OMXCodec(83): [OMX.Nvidia.h264.decode] AVC profile = 77 (Main), level = 32
04-15 13:30:05.640: I/OMXCodec(83): [OMX.Nvidia.h264.decode] video dimensions are 800 x 1280
04-15 13:30:05.640: I/OMXCodec(83): [OMX.Nvidia.h264.decode] Crop rect is 800 x 1280 @ (0, 0)
04-15 13:30:05.760: D/ButtonBookActivity(1238): video is prepared
04-15 13:30:06.540: D/ButtonBookActivity(1238): touch event
04-15 13:30:06.540: D/ButtonBookActivity(1238): button clicked
04-15 13:30:06.550: D/ButtonBookActivity(1238): calling playmovie in onTouch callback
04-15 13:30:06.550: D/ButtonBookActivity(1238): playing movie
04-15 13:30:06.550: D/ButtonBookActivity(1238): delaying movie reveal
04-15 13:30:06.560: D/NvOsDebugPrintf(83): Allocating new output: 800x1280 (x 12)
04-15 13:30:06.570: I/OMXCodec(83): [OMX.Nvidia.h264.decode] video dimensions are 800 x 1280
04-15 13:30:06.570: I/OMXCodec(83): [OMX.Nvidia.h264.decode] Crop rect is 800 x 1280 @ (0, 0)
04-15 13:30:06.620: D/ButtonBookActivity(1238): touch event
04-15 13:30:06.620: D/ButtonBookActivity(1238): ignoring touch event
04-15 13:30:06.770: V/NvAudioALSA(83): open called for devices 00000002 in mode 0...
04-15 13:30:06.770: V/NvAudioALSA(83): getAlsaDeviceName::devices 0x2 IsVoiceCallDevice 0 devName music
04-15 13:30:06.770: V/NvAudioALSA(83): Reset buffer size to 4096 and latency to 92879
04-15 13:30:06.770: V/NvAudioALSA(83): Set PLAYBACK PCM format to S16_LE (Signed 16 bit Little Endian)
04-15 13:30:06.770: V/NvAudioALSA(83): Using 2 channels for PLAYBACK.
04-15 13:30:06.770: V/NvAudioALSA(83): Set PLAYBACK sample rate to 44100 HZ
04-15 13:30:06.770: V/NvAudioALSA(83): Buffer size: 4096
04-15 13:30:06.770: V/NvAudioALSA(83): Period size: 1024
04-15 13:30:06.770: V/NvAudioALSA(83): Latency: 92879
04-15 13:30:06.770: V/NvAudioALSA(83): Period Time: 23219
04-15 13:30:06.770: V/NvAudioALSA(83): Periods: 4
04-15 13:30:07.060: V/NvAudioALSA(83): Initialized ALSA PLAYBACK device music
04-15 13:30:09.550: D/ButtonBookActivity(1238): video completed
4

1 に答える 1

1

これは、Android オーディオの遅延の問題に関連している可能性があります。オーディオ ファイルの start() の呼び出しには、実際にスピーカーから音が出るまでに時間がかかります。おそらくこれは動画にも当てはまり、メディアプレーヤーが動画フレームを表示するまでに時間がかかることがあります。

したがって、おそらくあなたにできることは何もありません。

于 2012-07-09T10:32:13.210 に答える