是否可以使用VLCJ放大视频,就像VLC具有此功能一样。我认为这称为放大或交互式缩放。它位于工具>>效果和滤镜>>视频>>几何>>放大
我将vlcj与javafx 9一起使用,将帧渲染为具有EmbeddedMediaPlayer
的画布。我也尝试像新的MediaPlayerFactory
一样将此放大滤镜添加到MediaPlayerFactory("--video-filter=magnify")
,但是我不知道如何导航此功能或设置缩放级别,因为"-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应用程序中不支持(且不起作用)该选项。
因此很遗憾,您无法使用vlcj应用程序来获得本机的“放大”。
最后一点-如果使用LibVLC的回调渲染API(在vlcj中,这是CallbackMediaPlayer),您实际上会启用放大滤镜,因为它不使用硬件解码。但是,您会看到的是视频,视频顶部涂有放大的叠加层,但它们不是交互式的,您的点击将不起作用。
简而言之,对此还没有令人满意的解决方案。理论上您可以自己构建一些东西,但是我怀疑这并不容易。