当前位置: 首页 > news >正文

FFmpeg 压缩视频文件

文章目录

  • FFmpeg 压缩视频文件
    • 基本压缩命令(保持 MP4 格式)
    • 转换为其他格式示例:
    • 关键参数说明:
    • 额外优化选项:
  • 在FFmpeg中使用多线程加速
    • 1. 帧级多线程 (frame-level multithreading)
    • 2. 切片级多线程 (slice-level multithreading)
    • 3. 编码器特定多线程选项
      • H.264/H.265 (libx264/libx265)
      • VP9
    • 4. 硬件加速
    • 5. 并行处理多个文件
    • 最佳实践建议

FFmpeg 压缩视频文件

使用 FFmpeg 压缩视频文件(包括 MPEG-4/MP4 格式)并输出为其他格式的基本命令如下:

基本压缩命令(保持 MP4 格式)

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -acodec aac -b:a 128k output.mp4

转换为其他格式示例:

  1. 输出为 MKV 格式
ffmpeg -i input.mp4 -vcodec libx265 -crf 28 -preset fast -acodec libvorbis output.mkv
  1. 输出为 WebM (VP9) 格式
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus output.webm
  1. 输出为 MOV 格式
ffmpeg -i input.mp4 -vcodec mpeg4 -q:v 5 -acodec aac output.mov

关键参数说明:

  • -crf:质量系数(18-28 是常用范围,值越大压缩率越高)
  • -preset:编码速度/效率平衡(ultrafast/superfast/veryfast/faster/fast/medium/slow/slower/veryslow)
  • 视频编码器:
    • libx264:H.264/AVC(兼容性好)
    • libx265:H.265/HEVC(压缩率高)
    • libvpx-vp9:WebM 专用
  • 音频编码器:
    • aac:MP4 常用
    • libopus:WebM 专用
    • libvorbis:MKV 常用

额外优化选项:

  • 缩放视频:-vf "scale=1280:-1"(设置宽度为1280,高度自动计算)
  • 降低帧率:-r 24(改为24fps)
  • 裁剪视频:-ss 00:01:30 -t 10(从1分30秒开始,截取10秒)

注意:实际使用时请先确保已安装 FFmpeg,且支持相关编解码器(可通过 ffmpeg -codecs 查看)。


在FFmpeg中使用多线程加速

FFmpeg提供了多种方式利用多线程来加速视频处理,主要包括以下几种方法:

1. 帧级多线程 (frame-level multithreading)

使用 -threads 参数可以开启帧级多线程处理:

ffmpeg -threads 4 -i input.mp4 output.mp4

或者分别控制不同组件的线程数:

ffmpeg -threads 4 -i input.mp4 -threads 8 output.mp4

2. 切片级多线程 (slice-level multithreading)

某些编码器支持切片编码,可以并行处理:

ffmpeg -i input.mp4 -c:v libx264 -slices 4 output.mp4

3. 编码器特定多线程选项

不同编码器有自己特定的多线程选项:

H.264/H.265 (libx264/libx265)

ffmpeg -i input.mp4 -c:v libx264 -preset fast -crf 23 -x264-params threads=8 output.mp4
# 或者
ffmpeg -i input.mp4 -c:v libx265 -x265-params pools=8 output.mp4

VP9

ffmpeg -i input.mp4 -c:v libvpx-vp9 -row-mt 1 -threads 8 output.webm

4. 硬件加速

虽然不是严格的多线程,但硬件加速可以显著提高速度:

# NVIDIA硬件加速
ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc output.mp4

5. 并行处理多个文件

使用GNU parallel等工具并行处理多个文件:

parallel ffmpeg -i {} -c:v libx264 {.}.mp4 ::: *.mov

最佳实践建议

  1. 线程数通常设置为CPU核心数或略多
  2. 不同阶段(I/O、解码、编码)可以设置不同线程数
  3. 使用 -threads 0 让FFmpeg自动选择最佳线程数
  4. 监控CPU使用率调整线程数以达到最佳效果

注意:过多的线程可能会导致性能下降,因为线程管理开销会增加。

相关文章:

  • 中国第七次人口普查100m网格化人口数据集(Tif/分省/分市)
  • 在Windows平台上使用MinGW编译C/C++项目,常见的构建工具
  • 22、话题重名及解决方案
  • Python训练营---DAY52
  • nginx学习
  • 【threejs】每天一个小案例讲解:常见材质
  • 单链表经典算法题之分割链表
  • SPRING AI 入门
  • TCN+Transformer+SE注意力机制多分类模型 + SHAP特征重要性分析,pytorch框架
  • Docker 网络模式
  • Golang启用.exe文件无法正常运行
  • SM4 与 AES 在 GPU 上的性能比较
  • GAN+ECA注意力机制实现图像超分辨率重建
  • 第七十九篇 大数据开发基石:堆数据结构解析与生活化应用
  • Vue3 计算属性 computed
  • 在macOS上运行Linux容器的方法
  • G1周打卡——GAN入门
  • linux 中pdf 的自动分页工具
  • 专题:2025年跨境B2B采购买家行为分析及采购渠道研究报告|附160+份报告PDF汇总下载
  • 【Go-补充】实现动态数组:深入理解 slice 与自定义实现
  • 合山网站建设/如何建造自己的网站
  • 加盟餐饮的网站建设/神秘网站
  • 重庆网站建设安全/百度新版本更新下载
  • 网站企业备案和个人备案的区别/品牌网站建设方案
  • 昆明网站建设公司推荐/最佳的资源磁力搜索引擎
  • 做博彩的网站赚钱吗/适合seo的建站系统