小甲鱼的二师兄 发表于 2024-2-6 01:26:44

使用FFMPEG进行视频压缩

使用FFMPEG进行视频压缩



比如我们要使用 FFmpeg 将 60fps 的 1080p 视频压缩为 30fps 的 720p 视频,需要执行两项操作:帧率(frame rate)和分辨率(resolution)。

下面是一个基本的命令行示例,说明如何做到这一点:

ffmpeg -i input.mp4 -r 30 -s hd720 output.mp4
在这个命令中:


[*]ffmpeg 是调用 FFmpeg 程序的命令。
[*]-i input.mp4 指定输入文件,input.mp4 是你想要转换的 1080p 60fps 的视频文件。
[*]-r 30 设置输出视频的帧率为 30fps。
[*]-s hd720 设置输出视频的分辨率为 720p,即 1280x720。
[*]output.mp4 是处理后的输出文件。

此命令将视频帧率减半,并将视频分辨率降低到 720p,但不会对视频进行额外的压缩或质量控制。

如果你想要进一步压缩视频文件大小,可以添加比特率控制参数(如 -b:v 用于视频比特率,-b:a 用于音频比特率)或者使用更高级的编码器设置(如 -crf 用于常量质量模式,在 x264 和 x265 编码器中)。

例如,要在保持适当质量的同时进一步压缩视频,你可以使用 CRF(Constant Rate Factor)参数:

ffmpeg -i input.mp4 -r 30 -s hd720 -c:v libx264 -crf 23 -preset fast output.mp4
在这个命令中:


[*]-c:v libx264 表示使用 libx264 编码器(H.264 编码)。
[*]-crf 23 是 libx264 编码器的常量质量控制选项,CRF 值范围从 0(无损压缩)到 51(最差质量),CRF 值约 18 至 28 是高质量输出的典型范围,23 是默认值。
[*]-preset fast 控制编码速度和压缩率的权衡,fast 预设是比默认的 medium 快的预设,它会稍微增加文件大小,但减少编码时间。其他选项包括 ultrafast, superfast, veryfast, faster, medium, slow, slower, veryslow。速度越慢,压缩效果越好,但编码时间更长。


FishC 发表于 2024-2-6 01:27:02

FFmpeg 是一个强大的开源多媒体框架,可以用于处理视频和音频文件。要使用 FFmpeg 进行视频压缩,你可以通过命令行输入相应的参数来完成。

下面是一个示例代码,展示如何使用 FFmpeg 进行视频压缩:

import subprocess

def compress_video(input_file, output_file, frame_rate, resolution):
    command = [
      'ffmpeg',
      '-i', input_file,
      '-r', str(frame_rate),
      '-s', resolution,
      output_file
    ]
    subprocess.run(command)

input_file = 'input.mp4'
output_file = 'output.mp4'
frame_rate = 30
resolution = 'hd720'

compress_video(input_file, output_file, frame_rate, resolution)

在上述代码中,我们使用了 `subprocess` 模块来执行命令行的操作。`compress_video` 函数接受输入文件名、输出文件名、帧率和分辨率作为参数,然后构建了一个包含 FFmpeg 命令和参数的列表,并使用 `subprocess.run` 来运行该命令。

你可以根据需要修改输入文件名、输出文件名、帧率和分辨率等参数,以适应你的具体需求。同时,你还可以根据自己的要求添加更多的 FFmpeg 参数,如比特率控制参数、编码器设置等,来实现更复杂的视频处理操作。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

不二如是 发表于 2024-2-6 08:40:26

100秒搞懂:

https://www.bilibili.com/video/BV1HA4m1L7rH

苗生海海 发表于 2024-2-7 06:43:50

好东西
页: [1]
查看完整版本: 使用FFMPEG进行视频压缩