Настройка времени запуска на видео проигрывателе - PullRequest
0 голосов
/ 01 июля 2019

Фон

У меня есть текст, который я хочу отображать в текстовом поле всякий раз, когда видео воспроизводится с определенным интервалом, например (00:02:00-00:04:00 "Hello there").

Эти текстовые поля должны отображаться только тогда, когда видео воспроизводится в определенный интервал. Если перемотать или пропустить видео в другое время, текстовое поле должно быть сгенерировано / уничтожено в зависимости от того, попадает ли текущее время в интервал или нет.

Я искал документацию для ffplay и vlc для реализации этой функции.

Что я пробовал :

ffplay: моя стратегия заключается в том, чтобы продолжать опрашивать текущее время видео, которое ffplay сбрасывает в STDERR, и проверять, попадает ли текущее время в интервал.

LibVLC: LibVLC поддерживает асинхронные события, но не тот, который будет зависеть от времени воспроизведения видео.

Мой вопрос :

1. Желательно ли продолжать опрашивать текущее время видео или устанавливать обратные вызовы / функции запуска?

2. Возможно ли получить текущее время воспроизведения видео как переменную и соответственно создать функции обратного вызова?

ПРИМЕЧАНИЕ: Я знаю, что субтитры делают то же самое, однако я хочу, чтобы текст находился в другом окне. Текстовое поле должно быть отделено от используемого мной видеопроигрывателя.

Ответы [ 2 ]

2 голосов
/ 01 июля 2019

Если все, что вас интересует, это текущее время или позиция видео, опрос вполне подойдет.LibVLC реализует обратные вызовы для Media Player Position Changed и Media Player Time Changed, но для чего-то, что выполняется очень регулярно (например, запрос времени каждую секунду), нет большой ценности для обработки его как асинхронного события.

Установите таймер для запроса каждую секунду (или полсекунды в зависимости от того, какую точность вы хотите) и вызовите:

libvlc_time_t current = libvlc_media_player_get_time(my_player);

Обратите внимание, результат в миллисекундах.И вам, очевидно, придется хранить ссылку на ваш my_player, но я предполагаю, что вы это сделали.Также обратите внимание, по моему опыту, время, сообщаемое libvlc_media_player_get_time, не всегда может быть очень точным.Но для воспроизведения это должно быть хорошо.

0 голосов
/ 02 июля 2019

Вы можете просто использовать subtitle файл, например
файл с именем вашего видео, но заканчивающийся .srt

Myvideo.srt, содержащий:

1
00:02:00,001 --> 00:04:00,001
Hello There!

Vlc должензабрать его автоматически.

ffplay может потребоваться сообщить об этом.

ffplay -ss 00:01:55.00 -i Myvideo.mp4 -vf subtitles="./Myvideo.srt `

...