视频上传失败特别让人烦躁,因为错误信息几乎从不指出真正的问题。“上传失败”涵盖了六种差很多的状况,而有用的第一步不是重试,是先弄清楚你中的是哪一种。症状会告诉你。
这份清单十秒钟就能解决大部分情况。下面逐条说明。
每个平台都有上限,而且差距极大——聊天软件可能只有几 MB,视频平台可以到好几 GB。手机视频是常见的犯人:4K 拍个几分钟,文件就远比大家预期的大。
压缩视频是直接的解法,而且手机素材省下来的通常很多,因为原始文件是为了录制速度而编码的,不是为了文件大小。光是把 4K 降成 1080p,数据率就大约剩四分之一。
这是大家最容易漏掉的原因,因为扩展名看起来没问题。.mp4 是容器——一个盒子。真正关键的是里面的编码,而一个 MP4 可以装 H.264、H.265/HEVC、AV1 等等。
H.264 基本上到处都收。上传会坏掉的地方是 H.265/HEVC,而那正是近几代 iPhone 和很多相机为了省空间默认录的格式。文件在拍它的那台设备上播得好好的,上传却被服务端退回。
解法是转成 MP4,视频用 H.264、音频用 AAC。这个组合是最大公约数,所有值得上传的平台都收。
服务端两个方向都设限。太高——8K,或 120 fps——平台可能直接拒收。太低,或比例特殊,一个预期竖式视频的服务也可能退回正方形的。
可变帧率会惹出自己的麻烦。屏幕录制和某些手机 App 产出的是 VFR 素材,帧率会随时变动。很多上传管线预期固定帧率,结果不是失败就是做出音画渐渐不同步的成品。用固定的 30 或 60 fps 重新编码就能解决。
每次停在不同百分比,那是连接问题,不是文件问题。大文件特别脆弱,因为它要让连接维持很久,而短暂断一下就够了。
有线胜过无线。小文件胜过耐心——先压缩常常成功,而一直重试不会,纯粹因为“可能出错的时间”变短了。
每次停在同一个位置,指向的是文件。这常发生在录像被中断的时候——电池没电、App 被强制关闭——留下一个索引从来没写完的视频。它通常还是播得出来,因为播放器容忍的东西,上传校验器不容忍。
常见的征兆是:文件播得出来但拉不了进度条,或者长度显示为零。重新编码会把结构重建起来,通常就够了。
没有声音。音频编码不被支持,所以视频被处理成没有声音的。AC-3 和 DTS——从光盘或电视录像抓出来的文件常见——是典型的犯人。把音频重新编码成 AAC。
画面横躺。手机用某个方向录,然后存一个旋转标志,告诉播放器要把画面转过来。有些上传管线会忽略那个标志。解法是直接旋转视频,让像素本身就是正的,而不是依赖元数据。
不知道平台要什么的时候,这是安全的目标:
转换之前,值得先查看一下文件里到底装了什么编码。看两分钟,可以省下“重压了一个本来就没问题的东西、真正的原因却没动到”。
不要反复重新编码。每一次转换都是有损的,所以一边猜问题一边转四次,最后你会得到一个传得上去、但画质明显比原文件差的视频。先判断原因,从原文件转一次。