res/raw に保存されているビデオ ファイルを再生するために VideoView を使用しています。ビデオの再生速度を制御する方法が見つかりませんでした。基本的にスクロールバーを動かしながら再生を減らしたり増やしたりしたいです。これを実装するための回避策はありますか?
4 に答える
いいえ、単に を使用して再生速度を変更することはできませんVideoView
。VideoView
制限さMediaPlayer
れたメディア機能のみを提供します。
PVPlayer などのサードパーティ ライブラリを使用して、それを自分で実装する必要があります。
これが、Android の優れたメディア プレーヤーが非常に価値がある理由でもあります :)
Mk Kamalのソリューションには予期しない副作用があると言いたいです。アプリがバックグラウンドから返されたときに、電話setPlaybackParams
をかけると、最後に再生されたビデオOnPreparedListener
が強制的VideoView
に繰り返されます。これがバグなのか機能なのかはわかりませんが、そのような動作を回避する方法を見つけました。
private float speed = 0.8f;
private final MediaPlayer.OnInfoListener listener = (mp, what, extra) -> {
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(speed));
return true;
}
return false;
};
videoView.setOnPreparedListener(
mp -> {
mp.setOnInfoListener(listener);
}
);
MEDIA_INFO_VIDEO_RENDERING_START
プレイヤーがすでに開始されている場合にのみ送信されます。
getPlaybackParams
という注釈が付けられていることを強調したいので、新しいオブジェクト@NonNull
を作成する必要はありません。PlaybackParams
DicePlayer は、私の Asus Transformer で完璧に動作します。スピードコントロールオンスクリーンディスプレイを備えています。
私は何res/raw
であるか分かりません。