使用VLCJ缩放

问题描述 投票:1回答:2

是否可以使用VLCJ放大视频,就像VLC具有此功能一样。我认为这称为放大或交互式缩放。它位于工具>>效果和滤镜>>视频>>几何>>放大

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

我尝试过耕种,但是那没有为我工作,或者我做得很糟糕。

谢谢您的帮助!

javafx zoom vlc vlcj
2个回答
1
投票

最起码,这应该适用于缩放:

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应用程序中不支持(且不起作用)该选项。

因此很遗憾,您无法使用vlcj应用程序来获得本机的“放大”。

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

简而言之,对此还没有令人满意的解决方案。

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

© www.soinside.com 2019 - 2024. All rights reserved.