You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FFmpeg将MP4转成符合规范的MPEG-4 Part 14?当前生成Part10

问题分析与解决方案

首先要澄清一个概念混淆:MPEG-4 Part 10是H.264视频编码标准的官方名称,而你要求的容器是MP4(MPEG-4 Part 14)——这是两个不同层面的概念:前者是视频流的压缩格式,后者是封装视频、音频流的容器格式。你的命令其实已经输出了MP4容器,只是你把编码标准当成了容器格式,误以为不符合要求。

接下来,针对你给出的规范,调整FFmpeg命令,确保所有要求都被满足:

调整后的FFmpeg命令

ffmpeg -i input.mp4 \
  -c:v libx264 \
  -crf 18 \
  -maxrate 25M -bufsize 50M \
  -g 60 -sc_threshold 0 \
  -vf "scale=min(1920,iw):min(ih*1920/iw,1080*16/9),pad=1920:1080:(1920-iw)/2:(1080-ih)/2,yadif" \
  -r 30 \
  -pix_fmt yuv420p \
  -c:a aac -b:a 128k -ac 1 -ar 48000 \
  -movflags +faststart \
  -t 59 \
  -y output.mp4

参数对应规范的说明

  • 容器要求:-movflags +faststart确保moov atom位于文件前部,FFmpeg默认生成的MP4无编辑列表,符合MOV/MP4容器要求
  • 音频规范:-c:a aac指定AAC编码,-ar 48000设置最高48kHz采样率,-ac 1单声道,-b:a 128k固定128kbps码率,完全符合
  • 视频编码:
    • libx264对应H.264编码
    • -g 60 -sc_threshold 0强制闭合GOP(每60帧一个关键帧,禁止场景触发的GOP分割)
    • -pix_fmt yuv420p确保4:2:0色度子采样
    • -vf yadif强制逐行扫描(如果源视频是隔行,可保留;源是逐行则可省略)
  • 帧率:-r 30设置30FPS,在23-60FPS范围内;若需更高帧率可改为60,也可用-fpsmax 60替代-r来限制最高帧率
  • 画面尺寸:scale=min(1920,iw):min(ih*1920/iw,1080*16/9)确保水平像素不超过1920,pad=1920:1080将画面补为1080x1920(9:16)推荐宽高比,避免裁剪或黑边
  • 视频码率:-crf 18启用VBR编码,-maxrate 25M -bufsize 50M限制最高码率不超过25Mbps
  • 时长:-t 59设置59秒,符合3秒-15分钟要求
  • 文件大小:按25Mbps码率计算,15分钟视频约2.8GB,若需控制在1GB内,可适当提高crf值(比如20-22)降低码率

内容的提问来源于stack exchange,提问作者Micha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:55:32