0
私はビデオファイルを持っており、ユーザーにスワイプの左右のジェスチャーで前後に再生させたいと考えています。ビデオファイルに左から右の静的なシーンが含まれている場合、ユーザはピクチャ上で左右にスクロールするような印象を持たなければなりません。これは私が現在持っているコードです。onScrollのジェスチャーのフィードバックをより速く
private GestureDetectorCompat mDetector;
private long lengthTourMs;
private long currentPositionMs;
private FFmpegMediaMetadataRetriever mmr;
ImageView video;
@Override
protected void onCreate(Bundle savedInstanceState) {
video = (ImageView)findViewById(R.id.video_frame);
mDetector = new GestureDetectorCompat(this, new SwipeGestureListener());
mmr = new FFmpegMediaMetadataRetriever();
mmr.setDataSource(this, Uri.parse("path/to/video/file"));
lengthTourMs = Long.parseLong(mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_DURATION));
currentPositionMs = 2000;
Bitmap frame = mmr.getFrameAtTime(currentPositionMs * 1000, FFmpegMediaMetadataRetriever.OPTION_CLOSEST);
video.setImageBitmap(frame);
}
class SwipeGestureListener extends GestureDetector.SimpleOnGestureListener {
private static final String TAG = "Gestures";
@Override
public boolean onScroll(MotionEvent event1, MotionEvent event2,
float distanceX, float distanceY) {
Log.d(TAG, "onScroll: " + String.valueOf(distanceX));
currentPositionMs += (long)distanceX;
currentPositionMs += lengthTourMs;
currentPositionMs %= lengthTourMs;
Bitmap frame = mmr.getFrameAtTime(currentPositionMs * 1000, FFmpegMediaMetadataRetriever.OPTION_CLOSEST);
Log.d(TAG, "currentPositionMs: " + String.valueOf(currentPositionMs));
video.setImageBitmap(frame);
return true;
}
}
問題が正常スワイプ左/右ジェスチャがonScrollに2~3の呼び出しの周り与え、上記のコードの結果は、ユーザがすべての滑らかな映像を見ていないことがちょうど2〜3フレームであることですのような経験。
onScrollのようなジェスチャーのフィードバックをより多く/より速くする方法はありますか?私はまた、問題を解決するための他の提案にもオープンしています。