Android LibVLC — запрос X не реализован не удается получить поверхность субтитров — как это исправить?

#android #libvlc

#Android #libvlc

Вопрос:

Внимание, здесь новичок-разработчик 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, из-за чего они появляются.

А) Запросы окна, по-видимому, связаны с событиями, связанными с мышью, которые Android не поддерживает, и, следовательно, они терпят неудачу. Я попытался перейти --no-mouse в качестве опции к libvlc, но безрезультатно… Это не помогло.

B) Отображение vout, по-видимому, связано с тем, где должны отображаться субтитры. Я не использую их и никогда не буду использовать, поэтому я попытался передать несколько различных опций в свой libvlc init, чтобы отключить субтитры все вместе, но ничего из этого не помогло.

Есть идеи, как очистить инициализацию libvlc / mediaplayer / vout / media, чтобы они не загрязняли мои журналы?

Спасибо!

Ответ №1:

А) Запросы окна, по-видимому, связаны с событиями, связанными с мышью, которые 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, чтобы отключить субтитры все вместе, но ничего из этого не помогло.

Вы не поделились тем, как вы реализовали свои surfaces / awindow / videoviews, но предоставили поверхность для субтитров, даже если вы не планируете их использовать. Это приведет к удалению журнала.

 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