问题标签 [video-subtitles]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
video - 自动检测视频源中烧录字幕的框/坐标
实际上,我想检测给定视频源的“最大”(高度和宽度)刻录字幕的坐标。但为了做到这一点,我首先需要检测示例视频中每个不同字幕的框坐标,并比较它们以找到最大的。我不知道从哪里开始,所以我找到的最接近的东西(有点)是 ffmpeg 的bbox
视频过滤器,它根据文档计算"the bounding box for the non-black pixels in the input frame luminance plane"
,基于给定的亮度值:
这给了我一条线,其中包含视频中每个输入帧的坐标,例如:
这个想法是制作一个脚本并循环过滤器的输出,通过比较它们来检测“最大”框,并输出它的坐标和帧号作为最长字幕的代表。
bbox
即使在带有白色硬字幕的相对较暗的视频中,过滤器也无法正确检测字幕框。通过反复试验并且仅针对我用来运行测试的特定视频样本,检测任何字幕框的“最佳”结果是使用min_val
130 的 a(假设有意义的值min_val
在 0- 255,虽然文档什么也没说)。使用drawbox
过滤器ffplay
测试特定帧报告的坐标,我可以看到它只正确检测到字幕的底部/左侧/右侧边界,大概是因为下图中的地球轮廓同样亮:
提高min_val
到 230 会稍微打破之前在底部/左侧/右侧的正确边界:
将其提高到 240 会给我一个奇怪的结果:
但是即使我能够通过bbox
过滤器达到完美的效果,这种技术也不是万无一失的,原因很明显(min_val
应该任意选择,烧录的字幕可以是不同的颜色,字幕后面的图像可以是取决于视频源等,同样甚至更亮)。
所以如果可能的话,我想知道:
- 是否有过滤器或其他技术可以与 ffmpeg 一起使用来做我想做的事
- 是否有另一个 CLI 工具或编程库来实现这一点
- 任何可能有帮助的提示(也许我以错误的方式看待问题)
python - 使用需要编码的moviepy向视频添加字幕
我有一个名为subtitles.srt
非英语的 srt 文件,我遵循了 moviepy 包的文档和源代码的说明(https://moviepy.readthedocs.io/en/latest/_modules/moviepy/video/tools/字幕.html):
这给出了错误TypeError: __init__() got an unexpected keyword argument 'encoding'
。
在源代码中,该类SubtitlesClip
确实有一个关键字参数encoding
。这是否意味着源代码的版本已过时或什么?我能做些什么呢?我什至尝试将moviepy.video.tools.subtitles
带有encoding
关键字参数的源代码直接复制到我的代码中,但它导致了更多错误,例如:
它未能导入装饰器convert_path_to_string
。
源代码似乎与我安装的不一致。无论如何要修复它?如果没有,是否有任何用于插入字幕或视频编辑的 Python 库的替代方案?
编辑:我目前的解决方案是创建一个子类SubtitlesClip
并覆盖父类的构造函数:
我实际上只改了两行,但我必须创建一个新类并重新定义整个东西,所以我怀疑它是否真的有必要。还有比这更好的解决方案吗?
video - 有没有办法提高在 ffmpeg 中将字幕刻录到视频的速度
目前,我是这样做的:ffmpeg -i video.mkv -vf subtitles=video.mkv out.mp4
但是对于某些视频,大约需要 55 分钟左右,但使用手刹时,即使我调整了启用超快模式的实例的设置,也只需 10 分钟即可将字幕刻录到视频。有没有办法提高速度:也许保存质量较差的输出文件或其他什么?
animation - FFmpeg多个drawtext过滤器彼此相邻
我想用 ffmpeg 在视频上绘制文本
- 有多条线路
- 这些行中的一些单词是粗体文本样式,而另一些则不是
- 线条需要使用时间线选项进行动画处理
我在这里有什么选择?我知道当要使一行中的某些单词变粗时,我最好使用字幕过滤器。但据我所知,我不能为字幕制作动画,对吧?
这就是为什么我想知道我是否可以使用多个相互相邻的drawtext过滤器。但是如何将一个drawtext的宽度信息传递给下一个drawtext以使其匹配正确的坐标?
python - 由于 Imagemagick 的错误,无法用 moviepy 编写文本剪辑
我正在尝试将 TextClip 写入带有 moviepy 的视频中。它一直在工作,但是在我重新安装 ffmpeg 后,它不再工作了(我不确定它是否导致它,但我提到它以防万一)。一些 TextClip 对象是纯空间。
我收到以下错误消息:
我尝试了多种方式解决问题,比如检查config-default.py
moviepy安装目录中的文件,它指向的ImageMagick的路径没有错。我试图重新安装ImageMagick,它也没有用。我尝试将policy.xml
ImageMagick 目录中的文件从none
to编辑read|write
,但它也不起作用。任何人都可以提出其他可能的解决方案吗?
html - 如何删除 WebVTT 生成的字符轮廓?
我想用 WebVTT 文件为视频添加标题,并注意到字符是自动勾勒出来的(所附图片中的黑线,如 html/CSS 的“文本笔划”),但我希望删除这些轮廓。我可以使用特定的 CSS 来实现这一点吗?请参考附件图片和我的 CSS 和 WebVTT 文件。提前感谢您的帮助。
html - 将 WebVTT 文本覆盖(字幕)定位在视频的四个角落
我在定位 WebVTT 字幕时遇到问题。我想在视频的四个角落放置 4 个占位符,以便在视频中发布一些额外的数据。问题是,定位的行为很奇怪,我想这样做有点不合时宜,所以如果我为此完全滥用 WebVTT,请在评论中让我知道通常支持的方式。
我目前取得的成绩
使用视频:https ://www.w3schools.com/html/mov_bbb.mp4
HTML:
track.vtt 文件:
我<video>
在开发工具中强调了元素。
如您所见,“A”、“B”和“C”字幕正确放置在视频的角落。但由于某种原因,“D”未对齐并向左移动。
任何想法如何解决这个问题并将“D”放在视频的右下角?
m3u8 - 在 m3u 播放列表中结合来自两个不同来源的视频和字幕
是否可以有一个.m3u播放列表,其中包含从两个不同来源获取的视频和字幕?例如,一个视频文件,比如说.mp4,位于
www.somedomain.com/example-video.mp4
.srt格式的字幕文件位于
www.anotherdomain.com/example-video.srt
我已经尝试了一切,但似乎没有什么对我有用。这可以通过.m3u播放列表格式来完成吗?
谢谢!
javascript - tvOS TVML 应用程序 - 外部 WebVTT 字幕轨道
我们的团队正在开发一个 TVML 视频存档应用程序。最近我们遇到了自定义字幕的问题。是否可以为基于 TVMLKit JS 的应用程序加载自定义/外部 WebVTT 字幕轨道?
我们正在尝试快速创建/修改我们自己的播放器并将这个对象传递给 javascript,但没有成功。
现在我们正在使用我们在 javascript 中创建的实例的基本播放器:
这将创建一个 IKJSPlayer 对象。问题是:我们可以修改 IKJSPlayer 的功能,还是可以创建一个基于 IKJSPlayer 的新对象并重写他的一些功能?
我们是否错误地看待这个问题,我们是否应该尝试以不同的方式解决它?
感谢您的任何建议。
javascript - 如何使用 JavaScript 正则表达式拆分此文本?
我想拆分此文本。我正在尝试使用 JavaScript 正则表达式来做到这一点。
(1) 真的没有。(2) 嗯。(3)看哪,王子(4)是他自然元素的关键,畏缩在他生命中女人的摆布之下。(5) 见我,也许你想和我的女儿们一起吐口水,教她们一些组合。(6) 陛下,您无疑是最好的老师。(7) 例如,是我女儿教我现代世界的语言。
我想将其解析为片段组。我正在寻找这些结果之一。
我使用这种模式。
请问你能帮帮我吗?我应该使用什么模式来正确拆分文本?
先感谢您!