先说结论,后面慢慢展开。
素材加工里真正会动到平台判重结果的,只有三样东西:帧间差异、音频指纹、画面构图。其他流传很广的操作,我基本都试过,大多没用,有些还有反效果。
2023年12月我拿《英雄本色》和《无间道》的素材剪了一条3分42秒的竖版混剪,1080x1920、30fps。前前后后导出过7版,播放量分别是187、342、91、563、220、430,第7版8.2万。7个文件我都留着没删,后来拉进达芬奇逐帧对比过,才明白前面六版在瞎忙什么。
前六版我改了啥
第1版是原始剪辑,16:9转9:16裁剪。第2版改了MD5,用的网上那种一键小工具。第3版加了2秒片头和一层3%不透明度的噪点。第4版整体水平镜像。第5版套了青橙LUT。第6版饱和度拉高8%、对比度加5%,又加了一圈4px的边框。
第7版反而做得最少:25fps用光流法转成30fps;音频响度从-22 LUFS拉到-14;四个关键镜头的构图从居中移到偏左三分之一。
为什么改MD5是跟自己较劲
你上传一个文件,平台第一步就是转码。转码之后文件内容变了,MD5必然不一样。你在本地改MD5,改的只是硬盘上那个文件的校验值,跟平台拿到的东西没关系。
平台真正用的是感知哈希,pHash那套。做法是把画面缩到32x32、转灰度、做DCT变换,取左上角8x8的低频部分,再跟中位数比大小,生成64位指纹。这个算法对亮度、饱和度、轻微噪点都不敏感——你套LUT它基本不在乎,你加3%噪点它也无所谓。它敏感的是构图,画面主体位置一变,低频部分跟着变。
音频指纹是另一个体系,Shazam用的那套,抓的是频谱峰值对。变速超过±5%、加环境底噪、重新做混响,都会让指纹明显漂移。
帧率那一关,很多人栽在直接改数值
25fps的素材扔进PR时间线,序列设成30fps,PR默认是直接复制帧。25转30,每5帧会重复1帧,肉眼不一定看得出来,但帧间哈希一抓一个准。
正确做法是用时间插值里的光流法,或者装Twixtor。但光流也不是万能的,运动剧烈的地方会果冻,武打片里一个快速甩镜能糊成一团。我现在的做法是分段:静态对话镜头让它直接复制帧,运动镜头才开光流。麻烦,但导出时间能省一半。
码率这块,B站1080p60我上传给到12000kbps、crf 16-18,抖音我给8000-10000kbps、crf 18。抖音会二次压缩,你给低了压两次就成马赛克,暗部尤其明显。
音频是最被忽略的一块
我前面六版播放量上不去,音频响度才是最大原因。原片混剪出来大概-22 LUFS,抖音的响度基准差不多在-14 LUFS上下,你给低了,系统在响度归一化的时候会整体提音量,底噪跟着一起提,听感就脏。
命令是这个,双通道要跑两遍:
ffmpeg -i in.mp4 -af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=summary -c:v copy out.mp4
第一遍只测,输出里会有measured_I、measured_TP、measured_LRA这些值,第二遍把它们填回参数再跑一次。单通道也能出结果,但我试过,动态范围会被压平,人声发闷,像隔了层被子。
采样率统一48kHz,44.1的直接重采样。无音轨的素材我会补一条粉红噪声当底,振幅0.001左右,大概-60dB,纯静音反而更可疑。
不同素材,加工重点完全不一样
影视混剪最麻烦的是帧率不统一,一集45分钟的剧里可能混着24和25两种,你得先捋清楚再动手。口播类素材其实改音频更管用,画面本身就是固定机位讲三分钟,pHash几乎不变,这时候把语速调1.05倍、加一点房间混响、换掉背景音乐,比在画面上折腾有效得多。游戏录屏普遍是60fps,降到30帧间差异就很大,但画质损失也明显,我一般只在原片掉帧的时候才降。
我现在的固定流程
- 看源素材帧率,23.976或25的先统一到30,用光流,运动镜头单独标记。
- 画面缩放101%-103%,同时裁掉3%-5%边缘,注意别切到字幕。
- 噪点用
noise=alls=6:allf=t,时域噪点,超过10肉眼就能看出来。 - 音频跑双通道loudnorm到-14 LUFS。
- 导出前加
-map_metadata -1清元数据,顺便删掉原文件的创建时间和设备信息。 - 自己从头到尾看一遍。
哪些操作纯属心理安慰
水平镜像:构图变化是够大,但观众一眼看得出,字幕还会反,性价比极低。
每隔30秒插1帧黑场:没用。平台是按固定间隔抽帧比对的,你插的那一帧大概率不在采样点上。
加2秒片头logo:片头通常不参与内容指纹计算,白加。
改文件属性、改创建时间:同MD5,转码之后全没了。
加边框:4px到8px的边框对pHash影响微乎其微,10px以上又太丑。
抽帧:有人两秒抽一帧。帧率一降,音画同步的偏差反而更明显,得不偿失。
最后
我现在判断一条加工过的素材能不能用,标准很简单:我自己从头看一遍,如果连我都觉得这是条新片子,那大概就成了。如果我自己一看就知道是原片换了层皮,那算法多半也是这么想的。