2

我目前正在尝试使用 LibVLC 播放视频并有一些问题:

  1. 在具有多个屏幕的计算机上,如何告诉 LibVLC 在特定屏幕上显示全屏?
  2. 我尝试使用libvlc_video_set_marquee_int. 经过一些跟踪和错误后,我发现,当我在启动视频约 70 毫秒后暂停主线程然后设置选取框文本时,它可以工作。为什么?我怎样才能做得更好?
  3. 我想显示字幕文本,但没有视频标题(LibVLC 在开头显示视频标题或文件名)。我读到您可以通过将--no-video-title-show选项传递给libvlc_new(). 但是,这有两个问题:首先,文档说不应该传递选项。好吧,好吧...但其次,使用此选项对选取框文本有一个奇怪的影响:您可以设置文本,但无论libvlc_marquee_Timeout设置为什么,它都会闪烁一次并立即消失。
4

1 回答 1

5

就在今天早上,我想我是在视频论坛上的人们的帮助下弄明白的。我应该提一下,我正在使用 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 系统上,我需要在启用 fontconfig 和 truetype 的情况下重建 vlc。

现在,随着 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");

希望其中一些可以帮助您获得有效的解决方案。

于 2013-05-15T22:28:17.037 回答