在安卓上使用LibVLC进行视频旋转

4
我正在使用LibVLC来显示视频文件。目前为止它工作得很好,尽管有方向的问题。我能够从元数据中获取方向信息,但不知道如何强制LibVLC将其从横屏旋转到竖屏。
如果能提供一个解决方法就太好了。
谢谢!

你尝试过在 vlc.Instance() 中添加 '--video-filter rotate --rotate-angle '+str(the angle you desire) 吗?我刚意识到这个问题已经几年了,呵呵! - Rolf of Saxony
你试过在 vlc.Instance() 中添加 '--video-filter rotate --rotate-angle '+str(the angle you desire) 吗?我刚刚意识到这个问题已经过去了好几年了,嗯,算了吧! - undefined
1个回答

7
我遇到了类似的问题。不幸的是,安卓上的LibVLC并没有暴露所有功能,所以我不得不在jni层中改变代码才能让它正常工作。以下是如何实现的方法:
编辑libvlcjni.c文件,并找到函数:Java_org_videolan_libvlc_LibVLC_nativeInit。 查找局部变量argv数组,并添加以下两个内容:
"--video-filter=transform" "--transform-type="
其中transform type可以是以下任意一个:90、180、270、hfilp、vfilp。
如果你省略--transform-type,那么默认会进行90度旋转。
这些修改的作用是加载变换滤镜然后设置变换。你可以使用--rotation-angle进行更精细的旋转,但是你首先需要加载适当的过滤器。
希望这对你有所帮助。

本地方法的修改已经生效,但是当使用90或180时,播放器会崩溃。我认为这可能与Android的视频表面有关,而不是VLC本身。对此有什么想法吗? - Pateta
我已经尝试了不同的旋转方式,没有崩溃。您能否发布日志,以便我更好地了解可能出了什么问题? - ne'mi
我不知道问题出在哪里。也许是我的测试应用程序有问题。我使用了你的方法,并使用-video-filter=rotate和--rotate-angle=解决了它。所以我会把你的答案标记为已接受。谢谢! - Pateta
我正试图做类似的事情。我可以问一下你使用了哪些设置吗?例如启用或禁用的硬件加速、色度类型,以及哪个VLC分支或提交适合你使用?谢谢! - Simon
你是如何在JNI层编辑事物的?你是否需要为Android编译libVLC?你从哪些git提交哈希值中拉取了代码? - SaundersB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接