使用 PGS 字幕叠加功能会将其置于错误的位置

使用 PGS 字幕叠加功能会将其置于错误的位置

正如标题所说,我想将一些 PGS 字幕刻录到视频中,但它们的输出位置错误。

字幕应如何显示: 正确位置

刻录后字幕的显示效果如下overlay位置不正确

ffmpeg 命令:

ffmpeg -y -report -ss 5 -t 5 -i input.mkv -filter_complex "[0:v:0][0:s:0]overlay[o]" -map "[o]" output.mp4

可能相关的是 ffmpeg 打印此警告的次数非常多:

[来自流 0:3 @ 0000022f59d36180 的图 0 输入] 过滤器上下文 - w:1424 h:1080 fmt:28,传入帧 - w:1920 h:1080 fmt:28 pts_time:4.523 [来自流 0:3 @ 0000022f59d36180 的图 0 输入] 并非所有过滤器都支持动态更改视频帧属性。

视频尺寸为 1424x1080。添加后-canvas_size 1920x1080警告消失,但字幕出现在错误的 X 位置和 Y 位置。我不明白为什么这会让警告消失,为什么-canvas_size 1424x1080什么都不做。

使用overlay=y=H-h没有效果,据我所知,它认为视频和字幕流的高度是相同的。

当我刻录基于图像的字幕时,通常不会发生这种情况。

我已将日志文件放在 pastebin 上,因为尽管 ffmpeg 标签页面说将日志文件放在问题中,但这样做会使我的字符数超出 3 倍:https://pastebin.com/LVV3J4Xd

答案1

也许您可以使用此过滤器自动调整视频流的基于图像的字幕大小,以避免遇到覆盖过滤器问题:

https://ffmpeg.org/ffmpeg-filters.html#scale2ref

对于我自己来说,有用的代码如下:

"[0:s:7][0:v]scale2ref[sub][vid];[vid][sub]overlay=shortest=1[out]"

相关内容