Как минимум, это должно работать для масштабирования:
mediaPlayer.video().setScale(float factor);
Где коэффициент равен 2,0 для двойного, 0,5 для половины и т. Д.
По моему опыту, это может быть немного затруднительно, и вам, вероятно, нужно использовать его в сочетании с кадрированием - и, кстати, обрезка работает.
Но если вам нужно интерактивное масштабирование, то вы создаете его самостоятельно, вызывая setCrop и setScale в зависимости от для некоторых взаимодействий пользовательского интерфейса, которыми вы управляете.
Для типа масштабирования «картинка в картинке», если вы используете сам VL C, вы делаете что-то вроде этого:
vlc --video-filter=magnify --avcodec-hw=none your-filename.mp4
It показывает небольшое наложение, где вы можете перетащить прямоугольник и изменить настройку масштабирования.
Теоретически это можно было бы использовать в приложении vlcj, передав аргументы в MediaPlayerFactory:
List<String> vlcArgs = new ArrayList<String>();
vlcArgs.add("--avcodec-hw=none");
vlcArgs.add("--video-filter=magnify");
MediaPlayerFactory factory = new MediaPlayerFactory(args);
Проблема в том, что вам кажется, что вам нужно "--avcode c -hw = none" (чтобы отключить аппаратное декодирование), чтобы фильтр увеличения работал - НО этот параметр не поддерживается (и не работает) в Приложение LibVL C.
Так что, к сожалению, вы не можете заставить это нативное «увеличение» работать с приложением vlcj.
Конечный момент - вы можете фактически включить фильтр увеличения, если вы используете API рендеринга обратных вызовов LibVL C (в vlcj это CallbackMediaPlayer), так как он не использует аппаратное декодирование. Однако то, что вы увидите, - это видео с увеличенными наложениями, нарисованными сверху, но они не интерактивны, и ваши щелчки не будут иметь никакого эффекта.
Короче говоря, на самом деле не существует удовлетворительного решения для этого.
Теоретически вы могли бы что-то построить самостоятельно, но я подозреваю, что это будет нелегко.