FFmpeg是一个免费的开源软件项目,由用于处理视频,音频和其他多媒体文件和流的大量库和程序组成。我们将使用它在格式之间进行转换,例如将视频转换为GIF或动画WebP。
FFmpeg的win10下载地址:https://github.com/BtbN/FFmpeg-Builds/releases
打开您的终端,然后运行以下命令:
ffmpeg -version
如果FFmpeg可用,您将注意到类似以下的输出:
FFmpeg version 4.3.1 Copyright 2000–2020 the FFmpeg developers ...
|
使用FFmpeg转换为动画GIF
ffmpeg -i $INPUT_FILENAME \ -vf "fps=$OUTPUT_FPS,scale=$OUTPUT_WIDTH:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \ -loop $NUMBER_OF_LOOPS $OUTPUT_FILENAME
|
# * $INPUT_FILENAME - 输入视频的路径. # * $OUTPUT_FPS - 每秒输出帧数。以“10”开头. # * $OUTPUT_WIDTH - 以像素为单位的输出宽度。保持纵横比. # * $NUMBER_OF_LOOPS - 使用“0”可以永远循环,也可以使用特定数量的循环。 # * $OUTPUT_FILENAME - 输出动画GIF的名称。
|
使用案例:
ffmpeg -i "sample_recording.mp4" \ -vf "fps=10,scale=720:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \ -loop 0 sample_recording.gif
|
将视频的一部分转换为GIF
ffmpeg -ss $INPUT_START_TIME -t $LENGTH -i $INPUT_FILENAME \ -vf "fps=$OUTPUT_FPS,scale=$OUTPUT_WIDTH:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \ -loop $NUMBER_OF_LOOPS $OUTPUT_FILENAME
|
# * $INPUT_START_TIME - 输入视频中要开始的秒数. # * $LENGTH - 从输入视频转换的秒数长度. # * 其余同上
|
这是此命令的示例,其中输入选项已填写:
ffmpeg -ss 32.5 -t 7 -i "sample_recording.mp4" \ -vf "fps=10,scale=720:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \ -loop 0 sample_recording.gif
|
使用FFmpeg转换为动画WebP
这是基本命令,带有用于将整个视频转换为动画WebP的各种选项。您可以使用FPS,输出宽度和质量等选项来确定文件的大小和输出质量:
ffmpeg -i $INPUT_FILENAME \ -vf "fps=$OUTPUT_FPS,scale=$OUTPUT_WIDTH:-1:flags=lanczos" \ -vcodec libwebp -lossless 0 -compression_level 6 \ -q:v $OUTPUT_QUALITY -loop $NUMER_OF_LOOPS \ -preset picture -an -vsync 0 $OUTPUT_FILENAME
|
# * $OUTPUT_QUALITY - WebP输出的质量。以“50”开头。 # * $OUTPUT_FILENAME - 输出动画WebP的名称。 # *其余同上
|
这是此命令的示例,其中输入选项已填写:
ffmpeg -i "sample_recording.mp4" \ -vf "fps=10,scale=720:-1:flags=lanczos" \ -vcodec libwebp -lossless 0 -compression_level 6 \ -q:v 50 -loop 0 \ -preset picture -an -vsync 0 sample_recording.webp
|
将视频的一部分转换为动画WebP
ffmpeg -ss $INPUT_START_TIME -t $LENGTH -i $INPUT_FILENAME \ -vf "fps=$OUTPUT_FPS,scale=$OUTPUT_WIDTH:-1:flags=lanczos" \ -vcodec libwebp -lossless 0 -compression_level 6 \ -q:v $OUTPUT_QUALITY -loop $NUMER_OF_LOOPS \ -preset picture -an -vsync 0 $OUTPUT_FILENAME
|
这是此命令的示例,其中输入选项已填写:
ffmpeg -ss 32.5 -t 7 -i "sample_recording.mp4" \ -vf "fps=10,scale=720:-1:flags=lanczos" \ -vcodec libwebp -lossless 0 -compression_level 6 \ -q:v 50 -loop 0 \ -preset picture -an -vsync 0 sample_recording.webp
|
访问此处的GitHub Gist获取所有命令和示例的代码。