如何去除视频内的字幕和台词?最新4种方法汇总

Posted 鬼手的CSD

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何去除视频内的字幕和台词?最新4种方法汇总相关的知识,希望对你有一定的参考价值。

对于很多自媒体和视频剪辑从业者来说,视频去文字和水印是家常便饭了,经常需要去除各种视频中的文字。那么如何去除视频中的文字(字幕)呢?随着科技的发展,AI人工智能技术在音视频的应用也越来越多,小编今天为大家整理一下视频去文字和去水印的常用方法。本文将告诉你在2023年,大家是如何快速且无痕的删除视频字幕的!

以下是本篇主要内容

  1. 字幕的定义和类型

  2. 移除字幕的4种方法

  3. 如何用PR软件去除视频字幕

  4. 如何用鬼手剪辑自动去除视频字幕

  5. 如何用爱剪辑手动删除视频字幕

  6. 鬼手剪辑、PR中间值和爱剪辑等视频去字幕方法对比

第1部分:视频字幕的定义和类型

通常有两种类型的字幕,硬编码字幕和软字幕。 软字幕定义:是指字幕没有嵌入到电影中,可以由用户自己添加字幕文件。这可以通过将字幕叠加到可用的视频上来完成。如果你只下载字幕,那么它们将被认为是原始的。而软字幕主要是一个独立的流,可以根据用户的意愿打开或关闭。所以当你需要去除视频中的软字幕或者外挂字幕的时候,只需要打开播放器选择关闭字幕,就可以了。你也可以单独的下载字幕的SRT文件,对他实行编辑或者其他处理。 硬编码字幕定义:也被称之为嵌入式字幕、内嵌字幕、内置字幕等等,通常字幕的文字是已经嵌入电影中的字幕,这基本上意味着硬编码字幕是视频图像的一部分,无法摆脱。他没有一个单独的字幕文件,用户不能使用剪辑工具或者播放工具来删除这个选项。这些字幕是不可拆卸的,不能改变或完全删除。

第2部分:移除或者删除内嵌字幕的四种方法

软字幕可以用很多播放软件来去除,通常就是关闭播放器里的字幕选项或者移除SRT字幕文件即可. 但如果你的字幕已经嵌入某个视频中,我们通常使用另外四种方法来删除它们,后文均有详细介绍。

  1. 方法一、裁剪视频:通过爱剪辑等软件裁剪视频,只保留视频中没有水印的区域。

  2. 方法二、贴纸遮盖:通过剪映(capcut)等软件在视频中添加贴纸或图像来掩盖有水印的区域。

  3. 方法三、模糊贴回:通过PR等软件,用PR中间值的方法来遮挡有水印或者有文字的区域。

  4. 方法四、AI智能处理:通过鬼手剪辑(GhostCut)等软件,上传视频后自动检测视频中水印和字幕的位置,然后自动进行擦除,对于哪些移动字幕、不规则的文字场景、浮动的水印等等。

第3部分:如何用PR软件去除视频字幕?

PR可以裁剪画面或使用中间值去除字幕。

  1. 点击视频左侧效果控件中的缩放,放大画面,裁剪字幕。

  2. 在效果中搜索中间值并添加到视频上。

  3. 在左侧效果控件中绘制中间值的区域蒙版,设置半径数值。

  4. 根据以上步骤操作即可在PR中去掉字幕。

 

第4部分:如何用鬼手剪辑自动删除视频中的字幕?

我们来看看鬼手剪辑GhostCut视频去字幕案例,如下图所示:

 鬼手剪辑去除文字效果

鬼手剪辑的操作流程也非常简单:

  1. 打开V信,搜索“鬼手剪辑”的小程序进去,点击【智能去文字】;

  2. 上传你需要处理的视频;

  3. 选择需要擦除的语言种类【中文或者英文】,选择擦除的方式【自动擦除还是自动裁剪】

  4. 点击提交,等待几分钟,即可完成文字全自动去除。

如果视频文字去除不干净,或者有误擦除,你可以到网页端选择文字擦除调整进行操作。你还可以同时在完成视频擦除的时候选择去重、视频翻译和其他选项,会一次性处理好,很方便。效果如上图所示

第5部分:如何用爱剪辑手动删除视频中的字幕?

加黑边遮住字幕和LOGO,打造宽屏电影效果 对于原视频字幕打的不太高的视频,为视频加黑边,即可遮住原片字幕和LOGO,还能实现宽屏电影的效果。方法有如下两种:

方法1、在“叠加素材”面板点击“加相框”左侧栏,在“其他”列表,有各种高度的黑边相框可供选择,当然,爱友们也可以选择喜欢的其他缤纷相框~

方法2、在“画面风格”面板点击“滤镜”左侧栏,在“滤镜”列表选择“加黑边框”。通过该功能,我们可以在“效果设置”栏目灵活设置边框高度、透明度、边框颜色。

 

第6部分:鬼手剪辑、PR中间值和爱剪辑等去字幕方法对比

去除方法代表软件时间成本难度效果适合人群
剪裁法爱剪辑一般损失画面信息普通用户
黏贴法剪映一般遮挡不好看,且难以大量处理普通用户
AI智能处理鬼手剪辑大部分场景适合,几乎无痕所有用户
中间值方法PR软件大部分场景适合,有模糊痕迹专业用户

相比而言,鬼手剪辑去字幕更简单,效果更好,速度更快,也适合更多用户。大家可以根据需要来选择自己的视频去字幕的方式哦

如何映射用ffmpeg和视频字幕提取的帧? (帧精度问题)

【中文标题】如何映射用ffmpeg和视频字幕提取的帧? (帧精度问题)【英文标题】:How to map frame extracted with ffmpeg and subtitle of a video? (frame accuracy problem) 【发布时间】:2019-11-12 15:12:09 【问题描述】:

想为使用 ffmpeg 提取的帧生成文本文件,如果有的话,包含帧的字幕,在我也使用 ffmpeg 刻录字幕的视频上。

我使用带有pysrt 的python 脚本来打开subrip 文件并生成文本文件。 我正在做的是每个帧都由 ffmpeg 用帧号命名,然后由于它们以恒定速率提取,我可以使用公式 t1 = fnum/fps 轻松检索帧的时间位置,其中fnum 是使用文件名检索的帧数,fps 是传递给 ffmpeg 以进行帧提取的频率。

即使我使用相同的字幕文件来检索时间轴中的文本位置,也就是视频中使用的那个,我仍然会遇到准确性错误。大多数我有一些文本文件丢失或一些不应该存在。

因为在谈论帧时时间并不是真正连续的,所以我尝试使用带有硬编码字幕的视频的 fps 重新校准 t,让我们将 fps vfps 称为视频 fps(我已确保视频 fps字幕刻录前后相同)。我得到公式:t2 = int(t1*vfps)/vfps。 它仍然不是 100% 准确。

例如,我的视频是 30fps (vfps=30),我以 4fps (fps=4) 提取帧。 提取的第 166 帧 (fnum=166) 没有显示字幕。在 subrip 文件中,前一个字幕以t_prev=41.330 结尾,下一个字幕从t_next=41.400 开始,这意味着t_sub 应该满足:t_prev < t_sub and t_sub < t_next,但我无法做到这一点。

我试过的公式:

t1 = fnum/fps  # 41.5 > t_next
t2 = int(fnum*vfps/fps)/vfps  # 41.5 > t_next
# is it because of a indexing problem? No:
t3 = (fnum-1)/fps  # 41.25 < t_prev
t4 = int((fnum-1)*vfps/fps)/vfps  # 41.23333333 < t_prev
t5 = int(fnum*vfps/fps - 1)/vfps  # 41.466666 > t_next
t6 = int((fnum-1)*vfps/fps + 1)/vfps  # 41.26666 < t_prev

使用的命令:

# burning subtitles
# (previously)
# ffmpeg -r 25 -i nosub.mp4 -vf subtitles=sub.srt withsub.mp4
# now:
ffmpeg -i nosub.mp4 -vf subtitles=sub.srt withsub.mp4
# frames extraction
ffmpeg -i withsub.mp4 -vf fps=4 extracted/%05.bmp -hide_banner

为什么会发生这种情况,我该如何解决?

我注意到的一件事是,如果我提取原始视频和字幕的帧,对帧进行差异处理,结果不仅是字幕,背景也有变化(这不应该发生)。如果我两次使用相同的视频做相同的体验,差异为null,这意味着帧提取是一致的。

区别代码:

ffmpeg -i withsub.mp4 -vf fps=4 extracted/%05.bmp -hide_banner
ffmpeg -i no_sub.mp4 -vf fps=4 extracted_no_sub/%05.bmp -hide_banner
for img in no_sub/*.bmp; do
    convert extracted/$img##*/ $img -compose minus -composite diff/$img##*/
done

谢谢。

【问题讨论】:

ffmpeg -r 25 -i nosub.mp4 --> 这将重新定时帧并破坏原始时间戳。除非您知道自己在做什么,否则您不想这样做。 不是真的...我想在不改变帧率的情况下刻录字幕。所以我先试试这个:ffmpeg -i nosub.mp4 -vf subtitles=sub.srt withsub.mp4 但是它把帧率从25改成了30,所以我手动设置了帧率,好像不对。我不是 ffmpeg 的大用户。我在 Google 上搜索了如何使用 ffmpeg 保留帧率并找到了这个 superuser.com/questions/460332/…,但它没有被接受的答案。 分享您最初尝试的日志。 我的错,原来的 fps 是 30,所以我第一次尝试刻录字幕并没有改变帧速率。然而问题依然存在。并且在字幕刻录前后进行帧减法显示出比字幕更多的差异。请让我提醒一下,这不是我要解决的问题,但可能是我的问题的原因。你想看什么日志? 还值得注意的是,在示例中,区间的边界乘以帧提取得到:t_prev*fps=165.32t_next*fps=165.6,这意味着,如果 ffmpeg 提取的帧是1/fps 的因素,那么我不应该让第 166 帧位于两个字幕之间,而是显示第二个字幕(或者前一个字幕)。如果通过视频 fps 进行校正也是一样的:int(t_next*vfps)*fps/vfps=165.2, int(t_next*vfps)*fps/vfps=165.6 【参考方案1】:

您可以提取具有准确时间戳的帧,因此

ffmpeg -i nosub.mp4 -vf subtitles=sub.srt,settb=AVTB,select='if(eq(n\,0)\,1\,floor(4*t)-floor(4*prev_t))' -vsync 0 -r 1000 -frame_pts true extracted/%08d.bmp

这将从每四分之一秒中提取第一帧。输出文件名长度为 8 个字符,其中前 5 位是秒,后三位是毫秒。您可以根据最大文件持续时间更改字段大小。

【讨论】:

您能否详细介绍一下参数?我也收到一个错误:Missing ')' or too many args in 'if(eq(n,0)' settb 过滤器用于将时基设置为 1 微秒,选择过滤器表达式将选择第一帧,然后选择最接近上一季度秒的每一帧。 -r 1000 将时间戳转换为毫秒精度(否则文件名会变得更长)。 vsync 确保 ffmpeg 不会改变时间戳。 frame_pts 将时间戳打印到文件名中。 编辑 cmd 以转义所有逗号

以上是关于如何去除视频内的字幕和台词?最新4种方法汇总的主要内容,如果未能解决你的问题,请参考以下文章

求周星驰版的唐伯虎点秋香全剧英文台词,最好有双语字幕影片或者相关的链接

vue怎么把里的字幕去掉

通过正则表达式提取泰坦尼克号字幕里的所有台词

pr2017 中字幕的矩形工具如何输入文字

短视频封面抽取和标题自动化生成

Bilibili 字幕语料库