Как узнать, готово ли воспроизведение видео после поиска, с помощью libVLC

Я пытаюсь сообщить пользователю, что операция поиска завершена и можно начинать воспроизведение видео. Но я не могу найти способ сделать это.

libvlc_media_player_get_time возвращает правильное время сразу после поиска, я планировал увидеть, когда оно изменится на текущее время, но нет, это не работает.

libvlc_media_player_will_play, по-видимому, возвращает значение true, независимо от того, может быть запущено воспроизведение или нет.

Любые идеи?

Я собираюсь посмотреть, есть ли способ получить PTS текущего кадра.


person 0xbaadf00d    schedule 13.08.2015    source источник
comment
Как насчет ожидания события media_player_buffering со значением 100% завершения? Не идеально, но может сработать.   -  person caprica    schedule 13.08.2015
comment
Не сработало, буферизация может быть чем-то, что происходит, когда он подключен к потоку.   -  person 0xbaadf00d    schedule 14.08.2015


Ответы (1)


Мой ужасный лайфхак, который действительно работает, заключается в следующем.

void Video::setTime(int p_msecs)
{
   d->timeSet = p_msecs;
   libvlc_media_player_set_time(d->mediaPlayer, p_msecs);
}

bool Video::isSeekReady() const
{
    return d->timeSet != libvlc_media_player_get_time(d->mediaPlayer);
}
person 0xbaadf00d    schedule 13.08.2015
comment
Это может закончиться очень плохо, так как есть много видео с переменной частотой кадров, где вы не можете угадать правильную временную метку следующего кадра. Таким образом, вы запрашиваете d-›timeSet, но поиск на самом деле приведет вас к ближайшему кадру (отметка времени, связанная с этим кадром), поэтому вы можете никогда не достичь d-›timeSet. - person Oliver Zendel; 07.10.2017
comment
Это может быть правдой, что это не работает со всеми видео, даже если я еще не сталкивался с видео, где это не работает. Я бы больше беспокоился, что это зависит от какой-то внутренней логики, которая нигде не документирована и может измениться в любое время. Но по какой-то причине это работает, даже если я НЕ даже пытаюсь угадать правильное время. Так что это может работать даже с видео с переменной частотой кадров, вы тестировали его с одним? - person 0xbaadf00d; 11.10.2017