使字幕覆盖不可见

使字幕覆盖不可见

Ubuntu 17.10

打开视频时默认总是显示英文字幕(嵌入),每次打开新文件时我都必须将其关闭。

如何将其设为none默认值?

有一个复选框外部的我关闭了字幕。这个设置毫无意义。它也应该适用于嵌入式字幕。

不,另一个问题中的糟糕破解将字体大小设置为 1px 或类似的值并不是解决方案。

这种情况发生在.mkv包含字幕流的容器文件subt中。

答案1

使字幕覆盖不可见

经过大量谷歌搜索后,在 AU 中发现了相同的问答:图腾(视频)-关掉东西?。就像您的问题一样,那里的原始发帖人不想将字体大小设置为 1 像素作为解决方法。

问题中发布的答案发现,使用字体大小“0”可以gsettings完美地工作:


永久删除视频中的字幕

另一个选择是永久删除字幕从您的.mkv文件中。链接中的作者解释了如何对软标题和硬标题执行此操作(通过裁剪图片的下半部分)。本文分为三个部分:

  • 第一部分:检查字幕是否为软字幕
  • 第二部分:如何从 MKV、AVI 和 MP4 中删除软字幕?
  • 第三部分:如何从 MKV、MP4 和 AVI 中删除硬编码字幕?

通过电子邮件向开发人员发送新功能请求

GNOME Totem 的开发者是 Bastien Nocera。您可以通过以下地址给他发送电子邮件:[电子邮件保护]并要求提供一项新功能,即设置新打开的视频的默认语言。在您的情况下,默认语言为“无”。但是对于其他用户来说,如果他们的系统语言设置为“俄语”,但他们希望所有打开的视频都带有“英语”字幕,那么这将带来好处。


修改源代码并重新编译

Totem 源代码可以在github如果开发人员不满足新功能请求,您可以修改源代码:

  1. 找到指定字幕格式的模块
  2. 找到将字幕设置为您的语言的行
  3. 添加一行新代码,将语言覆盖为 none

在源代码中添加一行代码可能需要花费很多时间,但你可能会发现这个过程很有启发性和令人愉快

我花了大概10分钟的时间才找到模块中设置字幕的函数:https://github.com/GNOME/totem/blob/master/src/totem-menu.c在第 246 行:

select_subtitle_action_cb (GSimpleAction *action,
               GVariant      *parameter,
               gpointer       user_data)
{
    totem_playlist_select_subtitle_dialog (TOTEM_OBJECT (user_data)->playlist,
                           TOTEM_PLAYLIST_DIALOG_PLAYING);
}

图腾用于GStreamer举重

感谢奇里基,我们了解了很多关于 Totem 内部结构以及它如何调用GStreamer来完成视频播放的繁重工作。GStreamer 接口选项可以完全关闭字幕:

  • 支持流选择和禁用。如果您的媒体有多个音频或字幕轨道,您可以动态选择播放哪一个,或者决定将其完全关闭(这对于关闭字幕特别有用)。对于每个选项,请使用“current-text”和其他相关属性。

部分说明“这对于关闭字幕特别有用”这可能是 Totem 更新版本的目标。

正如 Chriki 所指出的,GStreamer 选择默认字幕语言并提供 Totem 用于填充其设置菜单的所有字幕列表。Totem 提供了另一个“无”选项,选择该选项后会指示 GStreamer 关闭字幕。

我认为设计变更应该是从字幕选择菜单中删除“无”选项。然后创建一个全局菜单选项“字幕打开/关闭”,该选项在 Totem 会话期间保持不变。也许当每个新视频开始时,5 秒的气泡可以显示“可用字幕已关闭”,以提醒用户可以根据需要为当前视频打开字幕。

也就是说,我是一个初级 Bash 脚本编写者和 C 编程来修改图腾流处理器界面超出了我的工资等级。

答案2

Totem 无法设置默认值

我已经经历了图腾源代码到目前为止,似乎无法设置任何默认字幕语言或“无”。Totem 似乎总是使用默认字幕流底层 GStreamer 播放器选择当前播放的视频 – 并描述默认视频这里“默认情况下播放第一个带有数据的字幕流。”

换句话说,回答WinEunuuchs2Unix 报告的可能是您目前的最佳选择。这里再次引用了我的回答,并添加了一点原创内容:

gsettings set org.gnome.totem subtitle-font \
    "$(gsettings get org.gnome.totem subtitle-font | sed -r -e 's/ [0-9]+([^0-9])?$/ 0\1/')"

您可以直接在(bash)终端窗口中运行它,即您不必手动考虑要设置的字体;它使用之前设置的字体(可见gsettings get org.gnome.totem subtitle-font)。

有关我的索赔的更多详细信息

虽然很难证明某件事不是可用,我仍然想指出一些我遇到的似乎支持我的说法的相关代码。

功能totem_subtitles_update负责更新字幕菜单。它的作用归结为以下几点:

action = g_action_map_lookup_action (G_ACTION_MAP (totem), "set-subtitle");
// …
current = bacon_video_widget_get_subtitle (totem->bvw);
g_action_change_state (action, g_variant_new_int32 (current));

换句话说,它从视频小部件中获取当前字幕设置,并在菜单中使用它。

以下是bacon_video_widget_get_subtitle为了完整性:

g_object_get (G_OBJECT (bvw->priv->play), "current-text", &subtitle, NULL);

current-text属性被查询,其值通过变量返回subtitle(如上所示,通过变量使用current)。如上所述,此属性默认为“第一个带有数据的字幕流”。

答案3

似乎不可能使用 ATM。

但是有一种简单的方法可以禁用它们

gsettings set org.gnome.totem subtitle-font '[whatever your font is here], 0'

相关内容