如何使用ffmpeg高效的压缩视频

发布时间:2023年12月17日

不开启多线程压缩:

ffmpeg -y -i 1_input.mp4 -c:a copy -c:v libx264 -profile:v high -r 30 -crf 30 -s 1920x1080 -movflags +faststart 1_output.mp4

开启硬件和多线程压缩

ffmpeg -y -i 2_input.mp4 -c:a copy -c:v libx264 -profile:v high -r 30 -crf 30 -b:v 200k -s 1920x1080 -movflags +faststart 2_output.mp4 -hwaccel cuvid -threads 4

这段命令是使用 ffmpeg 工具来对一个视频文件进行转码和编辑。逐个解释每个参数:

  1. ffmpeg: 这是命令行工具的名称,用于处理多媒体内容,如视频、音频和字幕。
  2. -y: 如果输出文件已存在,这个选项会使得 ffmpeg 直接覆盖它,而不是询问是否覆盖。
  3. -i 2_input.mp4: 指定输入文件的名称,这里是 2_input.mp4
  4. -c:a copy: 这表示复制音频流而不进行转码。也就是说,音频部分不会重新编码,直接复制。
  5. -c:v libx264: 使用 libx264 编码器来转码视频流。libx264 是一个非常流行的 H.264 编码器。
  6. -profile:v high: 设置视频的 H.264 配置文件为 high。这决定了编码的复杂性和视频的质量。
  7. -r 30: 设置视频的帧率为 30 fps。
  8. -crf 30: 设置视频的质量。CRF值越小,质量越高,但文件大小也越大。CRF是Constant Rate Factor的缩写,这是一个相对质量/文件大小的度量。
  9. -b:v 200k: 设置视频的比特率为 200 kbps。这决定了视频的质量和文件大小。
  10. -s 1920x1080: 设置视频的分辨率为 1920x1080,即1080p。
  11. -movflags +faststart: 这个选项将视频文件放在“快速启动”轨道上,这使得视频在某些浏览器或平台上可以更快地开始播放。
  12. 2_output.mp4: 指定输出文件的名称,这里是 2_output.mp4
  13. -hwaccel cuvid: 使用 cuvid 硬件加速来进行视频编码。这通常用于NVIDIA的GPU,以加速H.264编码过程。
  14. -threads 4: 使用4个线程来进行编码工作。这可以提高编码速度,但具体效果取决于硬件和具体任务。

总结:这个命令从输入文件 2_input.mp4 中读取内容,对其音频流进行复制,对视频流使用 libx264 编码器进行转码,并应用一系列的参数设置,然后将结果保存为 2_output.mp4 文件。

存在的问题:

1. 直接这么使用,或导致CPU拉满, 特别是批量压缩时会导致电脑卡死可以考虑限制CPU
2. 感觉有没有开启硬件和多线程, 速度上查不了太多
3. 压缩前1.93G ,压缩后300MB左右 , 压缩时间大概是340s左右 压缩率达90%(这个和参数设置有关)
4. 压缩的关键参数: 分辨率, 帧率,
文章来源:https://blog.csdn.net/Dreamhai/article/details/135044708
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。