Skip to content

视频与图片

文件信息

  • MP4 文件的 moov 元数据位置(头部或尾部)
sh
// FFmpeg 日志分析法
ffmpeg -v trace -i input.mp4 2>&1 | grep -m 1 -e "type:'mdat'" -e "type:'moov'"

// 若需将 moov 移至头部,执行:  
ffmpeg -i input.mp4 -c copy -movflags faststart output.mp4

trace输出解析: 若先输出 type:'moov' ,则 moov 在文件头部;若先输出 type:'m dat' ,则 moov 在文件尾部。

  • 检查是否为分片 MP4 (包含 moof )

原理:分片 MP4 (Fragmented MP4) 将媒体数据 ( mdat ) 分割成多个小块,每个数据块前都有一个 moof (Movie Fragment Box) 来描述该片段的元数据。这与传统的“单一 mdat + 单一 moov ”结构不同。

sh
# 方法 1: 使用 ffprobe 检查格式信息 (最直接)
ffprobe -v error -show_entries format_tags=compatible_brands -of default=nw=1 your_video.mp4

解读:查看输出的 compatible_brands 。 如果包含 isom , iso2 , avc1 , mp41 等,通常是未分片的传统 MP4。 如果包含 iso6 , dash , cmfc (Common Media Application Format - Common), msix 等品牌,很可能是分片 MP4 或为流媒体优化的格式。

图片压缩

1. 尺寸修改

sh
# 固定宽度为 1024px,高度自动计算(保持比例)
ffmpeg -i input.jpg -vf "scale=1024:-1" output.jpg
# 固定高度为 768px,宽度自动计算(保持比例)
ffmpeg -i input.jpg -vf "scale=-1:768" output.jpg
# 将图片压缩至 800x600 像素(可能拉伸)
ffmpeg -i input.jpg -vf "scale=800:600" output.jpg 
# 限制最大尺寸(如不超过 1920x1080)
ffmpeg -i input.jpg -vf "scale='min(1920,iw)':'min(1080,ih)'" output.jpg

2. 修改画质

使用 - q:v 参数调节压缩质量,平衡画质与文件大小:

sh
# JPEG 质量压缩(值范围:1-31,值越小质量越高)
ffmpeg -i input.jpg -q:v 5 output.jpg
# PNG 优化压缩(通过调色板减少颜色数量) ,将 24 位色深转为 8 位索引色(最多 256 色),适合颜色较少的图形
ffmpeg -i input.png -pix_fmt pal8 output.png

3. PNG转JPG

sh
// -q:v:控制 JPG 质量,范围 1(最高质量)~31(最低质量)
ffmpeg -i input.png -q:v 5 output.jpg