几十年来,我一直是世界和地区的电影迷。字幕是这个时期必不可少的工具,它让我可以欣赏到来自不同国家和语言的优秀电影。如果您喜欢看带字幕的电影,您可能会注意到有时字幕不同步或不正确。您知道您可以编写自己的字幕并使其完美吗?让我们向您展示在Linux中进行一些基本的字幕编辑。从隐藏式字幕数据中提取字幕大约在2012年、2013年,我开始学习一个名为CCEextractor的工具。随着时间的推移,它已成为我必不可少的工具之一,尤其是当我偶然发现一个包含字幕的媒体文件时。CCExtractor负责解析视频文件并从隐藏式字幕数据中生成独立的字幕文件。CCExtractor是一个跨平台的免费开源工具。该工具自问世以来已经相当成熟,现在是GSOC和GoogleCodedInput的一部分。简单来说,这个工具基本上是一系列脚本,可以按顺序一个接一个地为您提供提取的字幕。您可以按照此页面上的CCExtractor安装指南进行操作。如果安装后您想从媒体文件中提取字幕,请按照以下步骤操作:ccextractor此命令将输出以下内容:$ccextractor$something.mkvCCExtractor0.87,CarlosFernandezSanz,VolkerQuetschke.Teletext部分取自PetrKutalek的telxcc----------------------------------------------------------------------输入:$something.mkv[提取:1][流模式:自动检测][程序:自动][Hauppage模式:否][使用MythTV代码:自动][定时模式:自动][调试:否][缓冲区输入:否][将pic_order_cnt_lsb用于H.264:否][打印CC解码器痕迹:否][目标格式:.srt][编码:UTF-8][延迟:0][修剪线:否][添加字体颜色数据:是][添加字体排版:是][转换大小写:否][视频编辑加入:否][提取开始时间:未设置(从开始)][提取结束时间:未设置(到结束)][直播:否][时钟频率:90000][图文电视页面:自动检测][开始学分文本:无][量化-mode:CCExtractor的内部乐趣动作]------------------------------------------------------------------打开文件:$something.mkv文件似乎是一个Matroska/WebM容器在Matroska模式下分析数据文件类型:matroska时间码比例:1000000Muxingapp:libebmlv1。3.1+libmatroskav1.4.2Writingapp:mkvmergev8.2.0('WorldofAdventure')64bitTitle:$somethingTrackentry:Tracknumber:1UID:1Type:videoCodecID:V_MPEG4/ISO/AVCLanguage:malName:$something曲目条目:曲目编号:2UID:2类型:音频编解码器ID:A_MPEG/L3语言:mal名称:$somethingTrack条目:曲目编号:3UID:somenumber类型:字幕编解码器ID:S_TEXT/UTF8名称:$something99%|144:34100%|144:34输出文件:$something_eng.srt完成,处理时间=6秒有问题吗?在这里打开工单https://github.com/CCExtractor/ccextractor/issues会粗略浏览一下这个例子中的媒体文件,发现媒体文件是马拉雅拉姆语(mal),格式是.mkv。然后它提取字幕文件并将其命名为源文件名并添加“_eng”后缀。CCExtractor是一款出色的字幕增强和字幕编辑工具,我将在下一节中介绍。有趣的阅??读:vicaps有一个有趣的字幕概要,它解释并分享了为什么字幕对我们如此重要。对于那些对这类话题感兴趣的人,那里也有很多电影制作细节。使用SubtitleEditor工具编辑字幕您可能意识到大多数字幕都是.srt格式。这种格式的美妙之处在于您可以将其加载到文本编辑器中并对其进行微小的更改。当输入一个简单的文本编辑器时,srt文件将如下所示:100:00:00,959-->00:00:13,744"THECABINETOFDR.CALIGARI"200:00:40,084-->00:01:02,088A11世纪神话在现代重现的故事讲述了一个江湖僧侣对梦游者的奇怪而神秘的影响。我分享的片段来自一部非常古老的德国电影《卡里加里博士的小屋》(1920)。字幕编辑器是一款很棒的字幕编辑软件。字幕编辑器可以设置字幕时长、与多媒体文件同步的字幕帧率、字幕间隔时间等,接下来我将在这里分享一些基本的字幕编辑。首先,按照与ccextractor工具相同的方式安装subtitleeditor工具,使用您喜欢的安装方法。在Debian中,可以使用命令:sudoaptinstallsubtitleeditor安装完成后,让我们看一下编辑字幕时的一些常见场景。调整帧率以同步媒体文件如果您发现字幕与视频不同步,原因之一可能是视频文件的帧率与字幕文件的帧率不匹配。那你怎么知道这些文件的帧率呢?为了获得视频文件的帧速率,您可以使用mediainfo工具。首先,您可能需要您的发行版的包管理器来安装它。使用mediainfo非常简单:$mediainfosomefile.mkv|grepFrameFormatsettings:CABAC/4RefFramesFormatsettings,ReFrames:4framesFrameratemode:ConstantFramerate:25.000FPSBits/(Pixel*Frame):0.082Framerate:46.875FPS(1024SPF)现在你可以看到视频文件的帧速率为25.000FPS。我们看到的另一个帧率是音频文件的帧率。虽然我可以分享为什么在视频解码和音频解码等地方使用特定的fps,但这将是一个不同的话题,并且有很多关于它的历史信息。接下来的问题是解决字幕文件的帧率问题,稍微复杂一点。通常,大多数字幕都是压缩格式。解压.zip存档和字幕文件(以XXX.srt结尾)。除此之外,通常还有一个同名的.info文件,其中可能包含字幕的帧速率。如果没有,那么通常最好去一个站点并从具有该帧速率信息的站点下载字幕。对于这个特定的德语文档,我使用Opensubtitle.org找到了它。正如您在链接中看到的,字幕的帧率为23.976FPS。显然,它不能很好地播放25.000FPS的视频文件。在这种情况下,您可以使用字幕编辑工具来更改字幕文件的帧率。按CTRL+A选择字幕文件的全部内容。单击“Timings->ChangeFramerate”,将23.976fps更改为25.000fps或您想要的其他帧率,保存更改后的文件。linux同步字幕帧率更改字幕文件起点有时上述方法足以解决问题,但有时上述方法不足以解决问题。在相同的帧率下,您可能会发现字幕文件的开头与电影或媒体文件的开头不同。在这种情况下,操作如下:按CTRL+A选择字幕文件的全部内容。单击“时间->选择移动字幕”。在Linux上使用字幕编辑器移动字幕为字幕文件设置新的起点,保存更改的文件。在Linux中使用SubtitleEditor移动字幕如果你想让时间更精确,你可以使用mpv查看电影或媒体文件并点击进度条(可以显示电影或媒体文件的播放进度),它也会显示微秒。通常我喜欢精确无误的操作,所以我会尽可能小心地调整它。与人类反应时间相比,MPV的反应时间更加精确。如果我想要非常精确的计时,那么我可以使用Audacity之类的东西,但那是另一种工具,你可以用它做更多的事情。这也将是我将在未来的博客中探索的内容。调整字幕间隔有时两者都做是不够的,您甚至可能需要缩短或增加间隔以使其与媒体文件保持同步。这是比较繁琐的任务之一,因为您必须单独确定每个句子的间隔时间。特别是在帧率可变的媒体文件的情况下(现在很少见,但你仍然会得到这样的文件)在这种情况下,你可能不得不手动修改间隔,因为无法进行自动编辑。最好的方法是修改视频文件(这会降低视频质量)或更改为另一个更高质量的源并使用您喜欢的设置对其进行转码。这是我将在未来的一些博客文章中提到的另一项重大任务。总结我上面分享的内容或多或少是对现有字幕文件的改进。如果从头开始,则需要花费大量时间。我根本不分享这个,因为一小时内的电影或任何视频材料很容易花费4-6小时或更长时间,具体取决于字幕员的技能、耐心、上下文、行话、口音、母语人士、翻译等,所有其中一些可能会影响字幕的质量。我希望你会发现这很有趣,并且从现在开始更好地处理你的字幕。