Android + LibVLC-未实现请求X +无法获取字幕Surface-如何解决这些问题?

问题描述

这里是android新手开发人员的警告...所以我的术语可能有点过错了;)

我有一个为Android编写的小应用程序,它使用LibVLC(最新的3.0.XX)。

每次初始化视频播放器时,都会得到以下信息:

10-22 04:20:03.365 22293 22601 E VLC     : [d27d4630/5849] libvlc window: request 1 not implemented
10-22 04:20:03.366 22293 22601 E VLC     : [d2855430/5849] libvlc vout display: can't get Subtitles Surface
10-22 04:20:03.371 22293 22601 E VLC     : [d27d4630/5849] libvlc window: request 0 not implemented
10-22 04:20:03.371 22293 22601 E VLC     : [d27d4630/5849] libvlc window: request 0 not implemented
10-22 04:20:03.371 22293 22601 E VLC     : [d27d4630/5849] libvlc window: request 1 not implemented

通过初始化,我的意思是通过setMedia(...)加载新媒体。尽管它可能在play()函数中发生。

这些接缝相当无害,因为一切正常,但是如果可能的话,我想禁用任何libvlc尝试执行的操作,从而导致它们弹出。

A)窗口请求事件似乎与android不支持的鼠标相关事件有关,因此它们失败了。我尝试将--no-mouse传递为libvlc的选项,但是没有骰子。它没有帮助。

B)vout显示似乎与应该显示字幕的位置有关。我不使用它们,也永远不会使用它们,因此我尝试将一些不同的选项传递给我的libvlc init来一起禁用字幕,但是这些都无济于事。

有什么主意如何清理libvlc / mediaplayer / vout / media初始化文件,以免污染我的日志?

谢谢!

解决方法

A)窗口请求事件似乎与android不支持的鼠标相关事件有关,因此它们失败了。我尝试将--no-mouse作为选项传递给libvlc,但是没有骰子。

除了禁用日志外,恐怕您无法隐藏这些日志。

static int Control(vout_window_t *wnd,int cmd,va_list ap)
{
    (void) ap;
    msg_Err (wnd,"request %d not implemented",cmd);
    return VLC_EGENERIC;
}

B)vout显示似乎与应该显示字幕的位置有关。我不使用它们,也永远不会使用它们,因此我尝试将一些不同的选项传递给我的libvlc init来一起禁用字幕,但是这些都无济于事。

您没有分享如何实现Surface / Awindow / VideoViews,但是即使您不打算使用它们,也可以为Subs提供一个Surface。那会使日志消失。

if (AndroidWindow_ConnectSurface(sys,p_window) != 0)
{
    if (id == AWindow_Video)
        msg_Err(vd,"can't get Video Surface");
    else if (id == AWindow_Subtitles)
        msg_Err(vd,"can't get Subtitles Surface");
    goto error;
}

https://github.com/videolan/vlc-3.0/blob/738da6c2737d2da93b24b7cce47944d45d10d8d3/modules/video_output/android/display.c#L402

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...