手机素材转韩漫风 / Komiko 里该先对齐的是分辨率和帧率

文章导读
手机拍的竖屏素材转韩漫风后构图被裁、动作发飘,多数情况不是风格模型的问题,而是输入规格没有对齐:源素材的分辨率、画幅、帧率各自不一致,转换链路里任何一次缩放或抽帧都会把偏差放大。处理顺序建议是先读清素材真实规格,再定目标画幅,最后统一分辨率与帧率,而不是反过来先调风格参数。
📋 目录
  1. 用 ffprobe 读出手机素材的真实分辨率、帧率和旋转信息
  2. 确定目标画幅:保留竖屏还是转成横屏
  3. 用 ffmpeg 统一分辨率与帧率,生成转换输入文件
  4. 把统一后的片段与原始片段各转一次做对比
  5. 记录每类素材的处理命令,形成可复用流程
A A

手机拍的竖屏素材转韩漫风后构图被裁、动作发飘,多数情况不是风格模型的问题,而是输入规格没有对齐:源素材的分辨率、画幅、帧率各自不一致,转换链路里任何一次缩放或抽帧都会把偏差放大。处理顺序建议是先读清素材真实规格,再定目标画幅,最后统一分辨率与帧率,而不是反过来先调风格参数。

先对齐分辨率与帧率,再谈画幅和风格。操作上:用 ffprobe 读编码宽高、旋转元数据、avg_frame_rate,确认是否存在可变帧率;按目标画幅统一 scale 与 pad,用 fps 参数固定输出帧率并 setsar=1。验证方式是转换后重新 ffprobe,并抽帧对比构图与边缘。适用场景为手机竖屏素材批量转入韩漫风流程;边界是原始有效像素不足或源素材严重抖动时,规格对齐只能减少二次损失,无法补回已丢失的画面信息。

用 ffprobe 读出手机素材的真实分辨率、帧率和旋转信息

文件管理器显示的“1080P”通常是被容器包装后的粗略值,手机录制的竖屏视频经常把画面横向编码,再用旋转元数据告诉播放器转 90 度。ffprobe 读的是编码层的宽高,这两者可能不一致,所以要先看编码值,再看旋转标记。

ffprobe -v error -select_streams v:0 \
  -show_entries stream=codec_name,width,height,r_frame_rate,avg_frame_rate,nb_frames,sample_aspect_ratio,display_aspect_ratio \
  -show_entries stream_side_data=rotation \
  -show_entries stream_tags=rotate \
  -of default=noprint_wrappers=1 input.mp4

需要重点关注的字段有几类。widthheight 是编码分辨率,判断实际有效像素看这两个值;rotation(部分容器写在 stream_tagsrotate 里)如果为 90 或 270,说明画面在播放时会被旋转,做缩放时需要先决旋转方向感,否则竖屏会被当成横屏处理。r_frame_rate 是名义帧率,avg_frame_rate 是平均帧率,两者不一致通常意味着可变帧率(VFR),手机在暗光下录制容易出现这种情况;nb_frames 为空或与时长乘帧率对不上,也是变帧率的信号。

验证方式可以先用一条命令统计真实总帧数:ffprobe -v error -select_streams v:0 -count_frames -show_entries stream=nb_read_frames -of default=noprint_wrappers=1 input.mp4,把结果和“时长×avg_frame_rate”做粗略比对。另一个校验方式是把同一个文件拖进播放器看显示分辨率,如果播放器显示的宽高与 ffprobe 输出的编码宽高相比是转置的,说明旋转元数据在起作用。需要结合环境确认:不同容器(MP4/MOV)对旋转信息的记录位置不一样,读不到 rotation 时不要直接假定无旋转,可以先转一次再观察。

确定目标画幅:保留竖屏还是转成横屏

画幅要在缩放之前定下来。如果先按竖屏缩放、后面又决定出横屏,就会发生二次裁切,构图损失不可逆。竖屏和横屏各自的取舍点如下。

目标画幅主要取舍适用场景
保留竖屏(如 1080×1920)不损失原始构图,人物全身和手部动作保留完整;横向内容偏少,多人物并排时容易拥挤单人出镜、全身动作、短视频平台竖屏发布
转为横屏(如 1920×1080)需要裁切或补边;裁切会切掉头脚,补边会出现黑边或模糊背景,画面信息不会增加横屏播放渠道、多人对谈、需要留出字幕区的画面
竖屏转横屏且不裁切整幅缩小后居中,两侧补边;人物会变小,细节经风格化后可能糊必须完整保留构图的场合

决策结论建议明确写下来并附在素材目录里,例如“本批素材:源为手机竖屏 VFR,目标 1080×1920 竖屏,缩放方式为等比缩放后居中补边,不做裁切”。记录下这条结论之后,后面所有 ffmpeg 命令都按同一目标参数执行,不会出现同类素材两种处理方式。风险边界:如果原始有效像素低于目标画幅,放大只会放大噪声和马赛克,这类素材应先降目标画幅或直接剔除。

用 ffmpeg 统一分辨率与帧率,生成转换输入文件

这一步的目标是把规格不一致的素材拉齐到同一套参数,作为风格转换的输入。常用骨架如下,竖屏与横屏只需替换 scale 与 pad 的目标值。

手机素材转韩漫风 / Komiko 里该先对齐的是分辨率和帧率
# 统一为竖屏 1080x1920、30fps,等比缩放后居中补边
ffmpeg -i input.mp4 \
  -vf "scale=1080:1920:force_original_aspect_ratio=decrease,\
pad=1080:1920:(ow-iw)/2:(oh-ih)/2:color=black,\
fps=30,setsar=1" \
  -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p \
  -an normalized_1080x1920_30fps.mp4
# 替换为横屏 1920x1080 时只改这两处:
# scale=1920:1080:force_original_aspect_ratio=decrease
# pad=1920:1080:(ow-iw)/2:(oh-ih)/2:color=black

逐条参数的作用和验证方式:scaleforce_original_aspect_ratio=decrease 表示等比缩放到不超过目标框,验证方式是转换后 ffprobe 检查宽高是否等于目标值、且没有出现拉伸(可对比源图与输出图的人物脸型比例)。pad 负责把不足的部分补边,验证方式是抽一帧看补边颜色和位置是否符合预期,若计划用模糊背景补边则把 color=black 换成背景图层,不要在同一条命令里既补黑边又指望后续自动填满。fps=30 是输出帧率参数,把 VFR 拉成固定帧率,验证方式是 ffprobe 检查 r_frame_rateavg_frame_rate 是否一致;如果动作看起来发飘、有重复帧,可以先试 25 或 24 帧对比,但要以目标平台的推荐帧率为准,不要凭感觉反复换。setsar=1 清除源素材的非方形像素比,验证方式是检查输出 sample_aspect_ratio 为 1:1,否则部分播放器会出现横向压扁。

如果原始素材带旋转元数据,可以在命令里加 -noautorotate 之外的处理思路:先用 -vf "transpose=1" 显式旋转再进入 scale,这样比依赖播放器默认行为更可控。需要结合环境确认具体转置方向,抽帧确认正立后再批量执行。

把统一后的片段与原始片段各转一次做对比

规格对齐是否真的改善了结果,靠对比而不是靠感觉。把同一段素材分别用统一后的文件与原始文件走一次风格转换,重点看三件事。

  • 构图完整性:抽取时间轴头、中、尾三帧,看人物头部、手部、脚部是否被切掉。统一后的片段如果出现头脚被裁,问题多半在 pad 或 scale 的目标参数,而不是风格模型。
  • 动作连贯性:逐帧或慢放查看快速动作段落,观察是否有重复帧、跳帧。原始 VFR 素材直接送风格转换,常见表现是动作一顿一顿;统一帧率后若仍不连贯,需要回看源素材本身是否丢帧。
  • 边缘稳定性:看画面四边和补边区域,缩放或旋转处理不当时边缘会抖动,背景补边会随帧微动。边缘抖动通常来自源素材的轻微手持晃动被放大,可以考虑在转换前做一次轻度稳像,但稳像会改变构图,需要重新确认取舍。

对比结论写清楚“哪一种输入规格下的结果更接近预期”,而不是只写“好一些”。这一步的边界是:风格转换本身会重绘细节,边缘稳定性差如果只在风格化后出现,可能是风格环节的时序处理问题,不能全部归因到分辨率对齐。

记录每类素材的处理命令,形成可复用流程

每处理完一类手机素材,把命令和目标规格记下来,下次同类素材直接套用,不用重新试参数。记录建议一行一类,字段固定,便于搜索。

【素材类型】手机竖屏 / 1080x1920 编码 / VFR / 有 rotation=90
【目标规格】1080x1920 竖屏,30fps,sar=1:1
【使用命令】ffmpeg -i {input} -vf "transpose=1,scale=1080:1920:
force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,
fps=30,setsar=1" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p
-an {output}
【验证方式】ffprobe 检查 width/height=1080/1920、avg_frame_rate=30/1、sar=1:1
【已知风险】原始有效像素偏低时放大后细节不足,先降目标画幅
【备注】同类素材:其他手机竖屏录制、同样带旋转元数据的 MOV

适用素材类型的标注方式建议按“来源设备 + 编码宽高 + 帧率特征 + 旋转标记”四个维度写,例如“手机竖屏 / 1080×1920 / VFR / rotation=90”和“手机竖屏 / 1080×1920 / CFR / 无旋转”应分成两条记录,因为后者不需要 transpose。命令里可替换的部分用 {input}{output} 占位,其余参数保持原样,避免每次手改参数引入新的规格偏差。验证方式要写在记录里,执行完新素材后照着重跑一次 ffprobe,确认字段与记录一致,再进入风格转换环节。