halfsize

halfsize / X(Twitter)

视频压到能发 X(Twitter)

X 单个视频最多收 512 MB,然后几乎都会重新编码一遍。真正卡人的通常不是上限, 而是上传速度和那第二次压缩。这里讲怎么给它一个不会被压糊的文件。

512 MB 不是真正的瓶颈

手机拍的 4K 三分钟素材,本身就可能超过 512 MB;但更多人先撞上的是带宽:10 Mbps 上传传 400 MB 要五分半,断一次就得从头再来。

X 还会自己转码。与其丢一个巨大的 4K 源进去,不如先输出成它想要的样子:H.264 视频、AAC 音频、1080p、+faststart。这样平台能丢掉的东西更少。

一条命令

$ npx halfsize 片段.mp4 --for twitter

  target     512 MB
  plan       H.264  1920x1080  21.8 Mbps  audio 128 kbps  2-pass
  output     片段.512mb.mp4

  1.24 GB  →  498 MB   小 2.5 倍   比目标小 2.7%
  VMAF 96.1   SSIM 0.992   看着一样

想几十秒传完,就自己定一个更小的数。一分钟的片子根本用不到 512 MB:

$ npx halfsize 片段.mp4 --to 80mb

竖屏视频

手机素材通常是 1080×1920 加一个旋转标记。工具会读这个标记,输出真正的竖屏文件,而不是一条横屏视频再靠元数据转过来——后者在部分播放器里会直接横着放。不补黑边。

重新编码会损失多少画质

60 秒 1080p30、源 18 Mbps,默认设置的实测:

目标输出分辨率VMAF结论
512 MB498 MB1920×108096.1看着一样
100 MB97.6 MB1920×108093.4看着一样
40 MB39.1 MB1280×72088.7轻微变软

多一次编码不是白给的。上传前就把文件做成 X 偏好的格式,平台能再损失的空间就更小。

给 X 的格式清单

halfsize 的默认值就是这份清单,所以多数时候 --for twitter 就够了。

常见问题

X 真的收 512 MB 吗?

这是目前普通账号的单视频上限,而且调整过不止一次。视频时长限制还和账号等级有关。如果你的账号显示的数字不同,用 --to 按实际数字来。

要不要传 4K?

除非多出来的分辨率比上传时间更重要。多数播放场景下 X 最终给的是 1080p,一个干净的 1080p 更划算。

为什么上传后变糊了?

X 又转码了一次。如果你给它的是 H.264、AAC、+faststart,而且码率本来就没被饿死,它能破坏的空间会小很多。

会上传文件吗?

不会。压缩全在本地完成,只有最后发布那一步才把文件传到 X。

相关教程