如何去掉视频自带的黑边
有些视频的黑边就在画面本身里,所以播放器里任何“画面比例”设置都去不掉它们,在带鱼屏上它们还会把影片四面框住。解决办法是恰好裁掉这些黑边,一点不多。下面说明黑边从何而来、为什么凭眼睛裁剪会出错,以及 Frame Player 如何通过测量文件找到它们。
你打开一部电影,切换到全屏,上下却有黑边;在宽屏显示器上,甚至是一圈黑框。改画面比例会把一切压扁,缩放会切掉两边,而同一部电影的另一个版本根本没有黑边。这些黑边不是播放器造成的:它们是视频里的像素,必须裁掉。Frame Player 可以测量出它们在哪里,并且恰好去掉它们。
播放器加的黑边,和文件里的黑边
黑边有两种,只有一种能去掉。
播放器加的黑边,在画面和屏幕形状不同时就会出现。以 2.39:1(常见的影院宽银幕比例)拍摄的电影比 16:9 屏幕更宽,所以会占满宽度显示,上下留黑。这已经是完整的画面,在能放下的前提下尽可能大。要去掉这种黑边,只能切掉画面。
文件里的黑边是在制作视频时加进去的。蓝光是 1920×1080,即 16:9 的画框,所以 2.39:1 的影片在上面存储时,画面上下带有黑条,这叫遮幅(letterbox)。重制成 16:9 画框的 4:3 电视剧,两侧会有黑条,这叫柱状黑边(pillarbox)。而放在遮幅 16:9 画框里的 4:3 节目,四边都有黑条。对播放器来说,这些黑条就是画面:黑色的画面,但属于它拿到的那一帧。这也是同一部电影的两份拷贝可能不同的原因:一份按完整的 16:9 连黑边一起存储,另一份已经裁成了影片本身的形状。
为什么四边都会出现黑边
在 16:9 屏幕上,带遮幅的 16:9 文件看起来和裁好的文件一样:两者都是上下有黑边。当屏幕或窗口是另一种形状时,文件里的黑边就会显现出来。
| 你在看的内容 | 在哪里看 | 你看到的 |
|---|---|---|
| 存储在 16:9 文件中的 2.39:1 影片 | 21:9 带鱼屏 | 播放器给 16:9 画框加上左右黑边,文件又给里面的影片加上上下黑边:一个四边都是黑的小画面 |
| 同一个文件 | 窗口 | 窗口是画框的 16:9 形状,影片只占中间一部分 |
| 存储在 16:9 文件中的 4:3 剧集 | MacBook 的 16:10 屏幕 | 两侧是文件的黑边,上下是屏幕带来的细黑边 |
| 同一部影片裁好的版本 | 以上任意一种 | 只在屏幕形状需要的地方有黑边 |
裁掉文件里的黑边,就能把第一种拷贝变成最后一种。
其他播放器怎么做
凭眼睛。VLC 的视频 › 裁剪菜单提供一组固定比例,大多数播放器也有类似功能。你选一个看起来合适的,它就在中央切出该形状的矩形,下一个文件还得再选一次。
看屏幕。mpv 没有裁剪按钮,但它可以运行 FFmpeg 的 cropdetect 滤镜,报告正在播放的帧中的黑边,而 mpv 的源码树里带有一个脚本 autocrop.lua,对你眼前的场景运行这个滤镜,并按找到的结果裁剪。问题出在场景上。夜景的暗边其实是画面,片头可能前一分钟都是黑的,而顶部用黑暗构图的场景,在只看到这个场景的工具眼里,和遮幅一模一样。这个滤镜还需要帧位于普通内存中,所以在硬件解码时,它运行期间每一帧都要从显卡额外拷贝回来一份。
Frame Player 怎么做
打开画面面板(右键单击视频并选择“画面”,或按 C),在“裁剪”下选择一种形状:“无”、“自动”、2.39、1.85 或 4:3。
在带遮幅的剧集上打开的画面面板。自动裁剪测量文件,窗口随之收拢成影片本身的形状。
“自动”测量整个文件,而不是屏幕上的场景
“自动”会在播放之外,单独再打开一次文件,解码从文件长度的 10% 到 90% 之间分布的八个关键帧。在每一帧上,它从每条边逐行向内走,直到遇到画面:只要一行中比纯黑高出 16 级以上的采样不超过五十分之一,这一行就算作黑边,所以压缩在黑边里留下的细微噪点或单个坏点不会让它提前停下。
然后各帧逐条边投票,每条边保留它见到的最窄黑边。暗场景报告的黑边偏大,亮场景报告的是真实的黑边,最窄的那个就是正确的。允许有一帧意见不同,所以烧录在底部黑条里的字幕,或角落里的台标,不会否决整部影片的裁剪。有两帧画面延伸到某条边,就说明那条边是画面。
其余都是谨慎起见:
- 小于画面 1% 的黑条不处理,那是编码器的填充,裁掉它只会无谓地改变窗口形状,没人看得出区别。
- 裁剪后保留的宽度或高度不足 30% 时,会被视为误判,不做任何裁剪。
- 可供测量的帧少于三帧时,比如一段从头到尾都很暗的短片,结果是“未发现黑边”。
我们在带遮幅和柱状黑边的测试文件上测量过,其中包括 10-bit HEVC,还有专门用来骗它的素材,比如暗处的烟花、太空场景:每次得到的矩形都是准确的,五部满画幅的影片都返回无需裁剪,一个 4K HEVC 文件用时不到一秒。
固定比例
2.39 和 1.85 是影院电影加遮幅时使用的两种比例;4:3 是电视节目加柱状黑边时使用的比例。选择其中一种,会在中央切出该形状的矩形,按画面的显示形状计算,所以变形宽银幕(anamorphic)文件、你手动设置的画面比例和旋转过的视频都能得到正确结果。如果画面本来就是这个形状,播放器会告诉你,并保持原样。在你知道比例、黑边不够黑无法测量,或者播放链接(不提供“自动”)时,使用这些固定比例。
一个选择管整季,每一集单独测量
在一集上选择裁剪方式,会为该文件夹或种子记录下来,面板也会说明:作用于整个播放列表。“自动”会分别检测每个文件的黑边。下一集打开时,会自己应用这个选择:“自动”测量这一集,固定比例则根据它的画面计算。矩形从不从一个文件复制到另一个文件,因为同一资源的各集通常黑边相同,但并非总是如此,按试播集的矩形裁剪画幅更宽的大结局,就会丢掉画面。
每个文件都会记住它得出的矩形,包括“这里没有黑边”,所以再次打开时不需要任何开销。选择“无”也会对整个播放列表关闭裁剪。
在仍在下载的种子上
种子的文件块就在你的磁盘上,所以“自动”在那里也能用,但还在下载的文件有空洞,从空洞里读出的帧并不是帧。所以播放器只在已经下载好的区段内查找,通常是开头和你正在观看的位置附近,并把采样分布在这些区段上。场景少了只会让它裁得更少,绝不会更多。我们在把文件中间一半清空的拷贝上验证过:从两端采样找到了准确的矩形,即使采样点落在空白区域里,也没有给出错误结果。
如果已下载的内容太少,凑不够三个不同的位置来测量,面板会提示已下载的内容太少,请稍后再试。如果一集打开时已经选了“自动”,播放器会在播放期间自己重试,每 30 秒一次,共四次。
窗口随画面改变形状
当“窗口适应视频”设为“比例”(默认)时,窗口与画面形状一致;裁剪之后,就是影片本身的形状,而不是存储它的画框的形状。带遮幅的影片会在一个没有黑边的宽窗口中打开,你调整窗口大小时,它也保持这个形状。进度条的悬停预览也会跟着变化:显示裁剪后的画面,而不是带黑边的画框。
裁剪不是“填满屏幕”
画面面板里还有一个能去掉黑边的控件,但它做的是另一件事。
“裁剪”去掉文件里的黑边,保留全部画面。只要文件有这种黑边,都可以用它。
“填满屏幕”把画面放大到完全没有黑边为止,并切掉放不下的部分:16:9 屏幕上 2.39:1 影片的两侧,4:3 影片的上下。切掉的是画面而不是黑边:画面上的文字、画框边缘的人脸、烧录在图像里的字幕。
面板里还有亮度、对比度、饱和度和伽马;在 Mac 上,mpv 和 QuickTime 的色调曲线之间的选择在设置里。对于模糊的低分辨率片源,同一个面板里还有神经网络超分辨率。
常见问题
裁剪会切掉一部分画面吗?
用“自动”不会。它对每条边保留在整个文件中见到的最窄黑边,所以暗场景只会让它裁得更少,绝不会更多;拿不准时,它什么也不裁。会切掉画面的是“填满屏幕”,它会按屏幕形状的需要切掉多出的部分,那是另一个工具,下文会介绍。
我裁掉了黑边,全屏时还是能看到黑边,为什么?
因为你的屏幕和影片的形状不同。2.39:1 的影片在 16:9 屏幕上,无论文件是什么样,上下都需要黑边;裁剪之后,这些黑边由播放器自己绘制,而不是显示文件里的那些。裁剪能带来明显区别的地方,一是窗口,因为窗口会随影片的形状改变;二是形状比原文件更接近影片的屏幕,比如带鱼屏。
它会修改文件或重新编码吗?
不会。裁剪在视频播放时进行,磁盘上的文件不会被改动,选择“无”就能恢复完整画面。
每一集都要重新设置吗?
不用。这个选择会为文件夹或种子保留,每一集打开时都会自己应用它:“自动”会测量该集自己的黑边,所以画幅更宽的大结局不会按试播集的黑边被裁掉。
对在线视频有效吗?
固定比例有效,因为它们是根据画面尺寸计算出来的。“自动”无效:它要读取整个文件各处的帧,对于从网站串流的视频,这意味着在你观看之前就得把它从头到尾下载一部分。种子是例外,因为它的文件块就在你的磁盘上。
有快捷键吗?
C 键打开裁剪所在的画面面板。这个按键可以在快捷键编辑器中更改。