使用 VLCJ 缩放

Zooming with VLCJ

有没有办法像VLC一样用VLCJ放大视频有这个功能。我认为它被称为放大或交互式缩放。 它位于工具 >> 效果和滤镜 >> 视频 >> 几何 >> 放大

我将 vlcj 与 javafx 9 一起使用,将帧渲染为 canvas 和 EmbeddedMediaPlayer。 我也尝试像新 MediaPlayerFactory("--video-filter=magnify") 一样将此放大过滤器添加到 MediaPlayerFactory,但我不知道如何导航此功能或设置缩放级别,因为 "-zoom 2.0" 不起作用。

我试过剪裁,但对我没用,或者我试得很糟糕。

感谢您的帮助!

至少这应该适用于缩放:

mediaPlayer.video().setScale(float factor);

其中,双倍系数为 2.0,半倍系数为 0.5,依此类推。

根据我的经验,它可能有点小问题,您可能确实需要将它与裁剪结合使用 - 顺便说一句,裁剪确实有效。

但是,如果您想要交互式缩放,则可以根据您控制的一些 UI 交互调用 setCrop 和 setScale 自行构建。

对于画中画类型的缩放,如果您使用的是 VLC 本身,您可以这样做:

vlc --video-filter=magnify --avcodec-hw=none your-filename.mp4

它显示一个小叠加层,您可以在其中拖动一个矩形并更改缩放设置。

理论上,可以通过将参数传递给 MediaPlayerFactory 在您的 vlcj 应用程序中使用它:

List<String> vlcArgs = new ArrayList<String>();
vlcArgs.add("--avcodec-hw=none");
vlcArgs.add("--video-filter=magnify");

MediaPlayerFactory factory = new MediaPlayerFactory(args);

问题是您似乎需要“--avcodec-hw=none”(以禁用硬件解码)才能使放大滤镜工作 - 但该选项不受支持(并且不支持)工作)在 LibVLC 应用程序中。

很遗憾,您无法让本机 "magnify" 使用 vlcj 应用程序。

最后一点 - 如果您使用 LibVLC 的回调渲染 API(在 vlcj 中,这是 CallbackMediaPlayer),您 可以 实际上启用放大过滤器,因为它不使用硬件解码。但是,您会看到顶部绘制有放大叠加层的视频,但它们不是交互式的,您的点击不会有任何效果。

所以简而言之,这个问题真的没有令人满意的解决方案。

理论上您可以自己构建一些东西,但我怀疑这并不容易。