LibVLC: выделение и полноэкранные проблемы
В настоящее время я пытаюсь использовать LibVLC для воспроизведения видео и у меня есть несколько вопросов:
- На компьютере с несколькими экранами, как я могу сказать LibVLC показывать полный экран на определенном экране?
- Я пытаюсь использовать
libvlc_video_set_marquee_int
, После некоторого следа и ошибки я обнаружил, что это работает, когда я приостанавливаю основной поток после запуска видео в течение приблизительно 70 мс перед установкой текстового поля. Зачем? Как я могу сделать это лучше? - Я хочу показать выделенный текст, но без заголовка видео (LibVLC отображает заголовок видео или имя файла в начале). Я прочитал, что вы можете отключить заголовок видео, передав
--no-video-title-show
возможностьlibvlc_new()
, Однако это имеет две проблемы: во-первых, в документации сказано, что нельзя передавать параметры. Ну, ладно... Но, во-вторых, использование этой опции странным образом влияет на выделенные тексты: вы можете установить текст, но он просто мигает один раз и сразу исчезает, несмотря ни на чтоlibvlc_marquee_Timeout
установлено в.
1 ответ
Как раз сегодня утром, я думаю, я понял с помощью людей на форумах Videolan. Я должен отметить, что я работаю в системе Linux, я не знаю, какую ОС вы используете, но я знаю, что есть некоторые различия. Вот что я сделал:
Во-первых, мне показалось полезным сначала заставить шатер работать в командной строке. Вот ссылка на обсуждение этой темы:
http://forum.videolan.org/viewtopic.php?f=13&t=110743
Параметры командной строки, которые работали для меня:
cvlc --extraintf=http:logger --verbose=2 --file-logging --logfile=vlc-log.txt --sub-source="marq{marquee=marquee text here}" test.mpg
По пути у меня возникла проблема, из-за которой даже с помощью приведенной выше команды я не смог показать выделение. В моей системе gentoo мне нужно было пересобрать vlc с включенным fontconfig и truetype.
Теперь, когда cvlc отображает выделение на видео, я вернулся к libvlc. Я что-то упустил, поэтому я начал еще одно обсуждение здесь:
http://forum.videolan.org/viewtopic.php?f=32&t=110783
Ниже приведены фрагменты кода C / libvlc, которые в конечном итоге позволили мне показать выделение по требованию без выделения имени файла.
В основном:
const char * const vlc_args[] = {
"--extraintf=http:logger",
"--verbose=1",
"--file-logging",
"--logfile=/home/user/data/logs/vlc",
"--no-video-title-show", // <- this option disables the filename marquee
"--sub-filter=marq"}; // <- this option allows the on demand marquee to display properly
vlc_inst = libvlc_new (sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);
В обратном вызове нажатия клавиш:
libvlc_video_set_marquee_int(media_player, 0, 1); /* enable marquee */
libvlc_video_set_marquee_int(media_player, 6, 32); /* set marquee font size */
libvlc_video_set_marquee_int(media_player, 7, 2000); /* set marquee timeout (ms) */
libvlc_video_set_marquee_string(media_player, 1, "on demand marquee string here");
Надеюсь, что это поможет вам получить рабочее решение.