使用 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),您 可以 实际上启用放大过滤器,因为它不使用硬件解码。但是,您会看到顶部绘制有放大叠加层的视频,但它们不是交互式的,您的点击不会有任何效果。
所以简而言之,这个问题真的没有令人满意的解决方案。
理论上您可以自己构建一些东西,但我怀疑这并不容易。
有没有办法像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),您 可以 实际上启用放大过滤器,因为它不使用硬件解码。但是,您会看到顶部绘制有放大叠加层的视频,但它们不是交互式的,您的点击不会有任何效果。
所以简而言之,这个问题真的没有令人满意的解决方案。
理论上您可以自己构建一些东西,但我怀疑这并不容易。