欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > FFmpeg使用H.266/H.264/H.265编解码视频教程

FFmpeg使用H.266/H.264/H.265编解码视频教程

2025/3/1 8:08:28 来源:https://blog.csdn.net/Data_Arrow/article/details/145860910  浏览:    关键词:FFmpeg使用H.266/H.264/H.265编解码视频教程

以下是使用 FFmpeg 压缩视频的完整操作步骤,涵盖常用场景和参数优化:


1. 安装 FFmpeg

确保已安装最新版 FFmpeg(若已按此前步骤编译支持 H.266,可直接使用):

bash
复制
sudo apt install ffmpeg  # Ubuntu/Debian
brew install ffmpeg      # macOS

2. 基础压缩命令

场景 1:通用压缩(缩小文件大小)
bash
复制
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4
  • 参数解析

    • -c:v libx264: 使用 H.264 编码器(兼容性最佳)。

    • -crf 23: 恒定质量模式(范围 0-51,值越小质量越高,建议 18-28)。

    • -preset medium: 编码速度与压缩效率的平衡(可选:ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow)。

    • -c:a aac -b:a 128k: 音频编码为 AAC,码率 128kbps。

场景 2:使用 H.265(HEVC)提高压缩率
bash
复制
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -preset slow -c:a aac -b:a 96k output_hevc.mp4
  • -c:v libx265: 使用 H.265 编码器(压缩率比 H.264 高 30-50%)。

  • -crf 28: HEVC 的 CRF 范围与 H.264 不同,建议值 24-30。

场景 3:使用 H.266(VVC)极致压缩
bash
复制
ffmpeg -i input.mp4 -c:v libvvenc -qp 32 -preset medium -c:a copy output_vvc.mp4
  • 前提:已按此前步骤编译支持 libvvenc

  • -qp 32: VVC 的量化参数(类似 CRF,值越小质量越高)。

  • -c:a copy: 直接复制原始音频(避免重复编码)。


3. 调整分辨率与帧率

降低分辨率(适合移动端)
bash
复制
ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:v libx264 -crf 23 -preset fast output_720p.mp4
  • scale=1280:-2: 将宽度缩放到 1280px,高度按比例自适应(保持偶数)。

  • 支持的分辨率:640x360(360p)、1280x720(720p)、1920x1080(1080p)。

限制帧率(减少动态模糊)
bash
复制
ffmpeg -i input.mp4 -r 24 -c:v libx264 -crf 23 output_24fps.mp4
  • -r 24: 强制输出帧率为 24fps(原始帧率高于此值时生效)。


4. 音频处理

去除音频
bash
复制
ffmpeg -i input.mp4 -an -c:v libx264 -crf 23 output_no_audio.mp4
  • -an: 禁用音频流。

压缩音频质量
bash
复制
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a libopus -b:a 64k output_opus.mp4
  • -c:a libopus: 使用 Opus 编码器(低码率高音质)。

  • -b:a 64k: 音频码率 64kbps(适合语音)。


5. 批量压缩脚本

保存以下内容为 compress.sh,批量处理当前目录下所有 .mp4 文件:

bash
复制
#!/bin/bash
for file in *.mp4; doffmpeg -i "$file" -c:v libx265 -crf 28 -preset fast -c:a aac -b:a 96k "compressed_${file}"
done

运行脚本:

bash
复制
chmod +x compress.sh
./compress.sh

6. 验证压缩结果

检查输出文件信息
bash
复制
ffprobe output.mp4
对比文件大小和画质
  • 用播放器(如 VLC)主观观察画质差异。

  • 使用工具(如 psnrssim)客观评估质量:

    bash
    复制
    ffmpeg -i input.mp4 -i output.mp4 -lavfi "ssim" -f null -

注意事项

  1. 编码速度 vs 压缩率

    • -preset 参数控制编码速度,veryslow 压缩率最高但速度最慢,适合离线处理。

    • ultrafast 速度最快但压缩率低,适合实时场景。

  2. 硬件加速(如有 NVIDIA GPU):

    bash
    复制
    ffmpeg -i input.mp4 -c:v h264_nvenc -preset p7 -cq 23 -c:a copy output_gpu.mp4
    • 使用 h264_nvenc(NVIDIA)或 h264_videotoolbox(macOS)。

  3. 版权与格式兼容性

    • H.265/H.266 可能涉及专利授权,商业用途需谨慎。

    • 确保目标设备支持所选编码格式(如旧设备可能不支持 H.265)。

  4. 二次编码优化
    对于高精度需求,可先提取视频信息再二次编码:

    bash
    复制
    ffmpeg -i input.mp4 -c:v libx264 -crf 23 -pass 1 -f mp4 /dev/null
    ffmpeg -i input.mp4 -c:v libx264 -crf 23 -pass 2 output.mp4

总结

通过调整编码器(H.264/H.265/H.266)、分辨率、码率等参数,可灵活平衡视频质量和文件大小。首次建议使用 libx264 -crf 23 -preset medium 作为基准配置,逐步根据需求优化。若需极致压缩,可尝试 H.266(需自行编译 FFmpeg 支持)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词