Skip to content

ffmpeg 命令参数大全

-i

在 FFmpeg 中,-i 参数用于指定输入文件。-i 后面的值是输入文件的路径,例如/path/to/input.avi

例如,要将一个视频文件编码为 H.264 格式,可以使用以下命令:

bash
ffmpeg -i input.avi -c:v libx264 output.mp4

在这个例子中,-i input.avi 表示使用名为input.avi的文件作为输入文件。

FFmpeg 会将输入文件的视频和音频数据读入内存中,并进行编码、解码、复用、解复用、流化、过滤等操作。

总之,-i 参数用于指定输入文件,可以将输入文件的视频和音频数据读入内存中进行处理。

-f

在 FFmpeg 中,-f 参数用于指定输出文件的格式。-f 后面的值是输出文件的格式,例如mp4avimkv等。

例如,要将一个视频文件编码为 H.264 格式,并输出为 MP4 格式的文件,可以使用以下命令:

bash
ffmpeg -i input.avi -c:v libx264 -f mp4 output.mp4

在这个例子中,-f mp4 表示将输出文件的格式设置为 MP4 格式。

FFmpeg 会将编码后的视频和音频数据写入输出文件中,例如在这个例子中,FFmpeg 会将编码后的视频和音频数据写入 MP4 格式的输出文件中。

总之,-f 参数用于指定输出文件的格式,可以将编码后的视频和音频数据写入指定格式的输出文件中。

-y

在 FFmpeg 中,-y 参数用于覆盖输出文件。-y 后面的值是一个布尔值,表示是否覆盖输出文件,默认为false

例如,要将一个视频文件编码为 H.264 格式,并覆盖输出文件,可以使用以下命令:

bash
ffmpeg -i input.avi -c:v libx264 -y output.mp4

在这个例子中,-y 表示覆盖输出文件。

如果输出文件已经存在,FFmpeg 会提示用户是否覆盖输出文件。如果用户选择覆盖输出文件,FFmpeg 会将编码后的视频和音频数据写入输出文件中。

总之,-y 参数用于覆盖输出文件,可以将编码后的视频和音频数据写入输出文件中,即使输出文件已经存在。

-n

在 FFmpeg 中,-n 参数用于禁止覆盖输出文件。-n 后面的值是一个布尔值,表示是否禁止覆盖输出文件,默认为false

例如,要将一个视频文件编码为 H.264 格式,并禁止覆盖输出文件,可以使用以下命令:

bash
ffmpeg -i input.avi -c:v libx264 -n output.mp4

在这个例子中,-n 表示禁止覆盖输出文件。

如果输出文件已经存在,FFmpeg 会提示用户是否覆盖输出文件。如果用户选择不覆盖输出文件,FFmpeg 会停止执行命令。

总之,-n 参数用于禁止覆盖输出文件,可以防止 FFmpeg 将编码后的视频和音频数据写入已经存在的输出文件中。

-c:v

在 FFmpeg 中,-c:v 参数用于指定视频编码器。-c:v 后面的值是编码器的名称,例如libx264libvpxmpeg4等。

例如,要将一个视频文件从无损格式转换为 H.264 编码的 MP4 格式,可以使用以下命令:

bash
ffmpeg -i input.avi -c:v libx264 output.mp4

在这个例子中,-c:v libx264 表示将视频编码为 H.264 格式。

FFmpeg 支持多种视频编码器,不同的编码器适用于不同的场景。例如,libx264 是一种非常流行的 H.264 编码器,适用于大多数视频播放器和设备;libvpx 是一种开源的 VP8/VP9 编码器,适用于 WebRTC 和 WebM 容器;mpeg4 是一种较旧的编码器,适用于一些较旧的设备。

总之,-c:v 参数用于指定视频编码器,不同的编码器适用于不同的场景。

-t

在 FFmpeg 中,-t 参数用于指定输出文件的时间长度。-t 后面的值是一个时间长度,例如00:00:05表示 5 秒。

例如,要将一个视频文件编码为 H.264 格式,并输出为 5 秒长的 MP4 格式的文件,可以使用以下命令:

bash
ffmpeg -i input.avi -c:v libx264 -t 00:00:05 output.mp4

在这个例子中,-t 00:00:05 表示将输出文件的时间长度设置为 5 秒。

FFmpeg 会将输入文件的视频和音频数据读入内存中,并进行编码、解码、复用、解复用、流化、过滤等操作,然后将编码后的视频和音频数据写入输出文件中,直到输出文件的时间长度达到指定的时间长度为止。

总之,-t 参数用于指定输出文件的时间长度,可以将输入文件的视频和音频数据编码并写入指定时间长度的输出文件中。

-h

在 FFmpeg 中,-h 参数用于显示帮助信息。-h 后面的值是一个布尔值,表示是否显示帮助信息,默认为false

例如,要显示 FFmpeg 的帮助信息,可以使用以下命令:

bash
ffmpeg -h

在这个例子中,-h 表示显示帮助信息。

FFmpeg 会显示帮助信息,包括 FFmpeg 的版本号、命令行参数、编码器、解码器、复用器、解复用器、过滤器等。

总之,-h 参数用于显示帮助信息,可以查看 FFmpeg 的版本号、命令行参数、编码器、解码器、复用器、解复用器、过滤器等信息。

-version

在 FFmpeg 中,-version 参数用于显示 FFmpeg 的版本号。-version 后面的值是一个布尔值,表示是否显示 FFmpeg 的版本号,默认为false

例如,要显示 FFmpeg 的版本号,可以使用以下命令:

bash
ffmpeg -version

在这个例子中,-version 表示显示 FFmpeg 的版本号。

FFmpeg 会显示 FFmpeg 的版本号,包括 FFmpeg 的版本号、编译时间、编译平台等信息。

总之,-version 参数用于显示 FFmpeg 的版本号,可以查看 FFmpeg 的版本号、编译时间、编译平台等信息。

-formats

在 FFmpeg 中,-formats 参数用于显示 FFmpeg 支持的格式。-formats 后面的值是一个布尔值,表示是否显示 FFmpeg 支持的格式,默认为false

例如,要显示 FFmpeg 支持的格式,可以使用以下命令:

bash
ffmpeg -formats

在这个例子中,-formats 表示显示 FFmpeg 支持的格式。

FFmpeg 会显示 FFmpeg 支持的格式,包括视频格式、音频格式、字幕格式等。

总之,-formats 参数用于显示 FFmpeg 支持的格式,可以查看 FFmpeg 支持的视频格式、音频格式、字幕格式等信息。

-codecs

在 FFmpeg 中,-codecs 参数用于显示 FFmpeg 支持的编码器和解码器。-codecs 后面的值是一个布尔值,表示是否显示 FFmpeg 支持的编码器和解码器,默认为false

例如,要显示 FFmpeg 支持的编码器和解码器,可以使用以下命令:

bash
ffmpeg -codecs

在这个例子中,-codecs 表示显示 FFmpeg 支持的编码器和解码器。

FFmpeg 会显示 FFmpeg 支持的编码器和解码器,包括视频编码器、音频编码器、字幕编码器等。

总之,-codecs 参数用于显示 FFmpeg 支持的编码器和解码器,可以查看 FFmpeg 支持的视频编码器、音频编码器、字幕编码器等信息。

-decoders

在 FFmpeg 中,-decoders 参数用于显示 FFmpeg 支持的解码器。-decoders 后面的值是一个布尔值,表示是否显示 FFmpeg 支持的解码器,默认为false

例如,要显示 FFmpeg 支持的解码器,可以使用以下命令:

bash
ffmpeg -decoders

在这个例子中,-decoders 表示显示 FFmpeg 支持的解码器。

FFmpeg 会显示 FFmpeg 支持的解码器,包括视频解码器、音频解码器、字幕解码器等。

总之,-decoders 参数用于显示 FFmpeg 支持的解码器,可以查看 FFmpeg 支持的视频解码器、音频解码器、字幕解码器等信息。

-encoders

在 FFmpeg 中,-encoders 参数用于显示 FFmpeg 支持的编码器。-encoders 后面的值是一个布尔值,表示是否显示 FFmpeg 支持的编码器,默认为false

例如,要显示 FFmpeg 支持的编码器,可以使用以下命令:

bash
ffmpeg -encoders

在这个例子中,-encoders 表示显示 FFmpeg 支持的编码器。

FFmpeg 会显示 FFmpeg 支持的编码器,包括视频编码器、音频编码器、字幕编码器等。

总之,-encoders 参数用于显示 FFmpeg 支持的编码器,可以查看 FFmpeg 支持的视频编码器、音频编码器、字幕编码器等信息。

-bsfs

在 FFmpeg 中,-bsfs 参数用于显示 FFmpeg 支持的比特流过滤器。-bsfs 后面的值是一个布尔值,表示是否显示 FFmpeg 支持的比特流过滤器,默认为false

例如,要显示 FFmpeg 支持的比特流过滤器,可以使用以下命令:

bash
ffmpeg -bsfs

在这个例子中,-bsfs 表示显示 FFmpeg 支持的比特流过滤器。

FFmpeg 会显示 FFmpeg 支持的比特流过滤器,包括视频比特流过滤器、音频比特流过滤器、字幕比特流过滤器等。

总之,-bsfs 参数用于显示 FFmpeg 支持的比特流过滤器,可以查看 FFmpeg 支持的视频比特流过滤器、音频比特流过滤器、字幕比特流过滤器等信息。

-protocols

-protocols 是 FFmpeg 的一个命令行参数,它用于指定 FFmpeg 支持的网络协议。FFmpeg 是一个开源的跨平台多媒体框架,它支持多种音频和视频格式的编码、解码、转码、复用、解复用、流化、过滤和播放。

-protocols 参数可以用来启用或禁用 FFmpeg 支持的网络协议。例如,如果你不想让 FFmpeg 使用 HTTP 协议,你可以使用 -protocols 参数来禁用它。

-protocols 参数的语法如下:

ffmpeg -protocols <protocol1>[,<protocol2>,...]

其中,<protocol1><protocol2> 等是你要启用的网络协议的名称。如果你想要禁用某个协议,可以在协议名称前面加上 - 号。例如,如果你想禁用 HTTP 协议,可以使用 -protocols -http

FFmpeg 支持的网络协议包括:

  • file:本地文件系统协议。
  • pipe:管道协议。
  • udp:用户数据报协议。
  • tcp:传输控制协议。
  • rtp:实时传输协议。
  • rtsp:实时流协议。
  • http:超文本传输协议。
  • https:安全超文本传输协议。
  • ftp:文件传输协议。
  • rtmp:实时消息传输协议。
  • rtmpe:加密的实时消息传输协议。
  • rtmps:安全的实时消息传输协议。
  • rtmpt:传输控制的实时消息传输协议。
  • rtmpts:安全的传输控制的实时消息传输协议。
  • hls:HTTP 实时流协议。
  • dash:动态自适应流 HTTP 协议。
  • gopher:Gopher 协议。
  • sctp:流控制传输协议。
  • srt:安全可靠传输协议。
  • unix:Unix 域套接字协议。
  • smb:服务器消息块协议。
  • nfs:网络文件系统协议。
  • ftp_proxy:FTP 代理协议。
  • http_proxy:HTTP 代理协议。
  • rtsp_proxy:RTSP 代理协议。
  • tcp_proxy:TCP 代理协议。
  • udp_proxy:UDP 代理协议。

你可以使用 -protocols 参数来启用或禁用这些协议。例如,如果你想启用 rtprtsphttp 协议,可以使用以下命令:

ffmpeg -protocols rtp,rtsp,http

如果你想禁用 rtprtsp 协议,可以使用以下命令:

ffmpeg -protocols -rtp,-rtsp

注意,-protocols 参数不会影响 FFmpeg 对本地文件系统的访问。如果你只想让 FFmpeg 使用本地文件系统,可以使用以下命令:

ffmpeg -protocols file

这样,FFmpeg 将只使用本地文件系统协议,而不会使用任何网络协议。

-filters

-filters 是 FFmpeg 的一个命令行参数,它用于指定 FFmpeg 在处理视频或音频时使用的过滤器。FFmpeg 是一个开源的跨平台多媒体框架,它支持多种音频和视频格式的编码、解码、转码、复用、解复用、流化、过滤和播放。

-filters 参数可以用来指定 FFmpeg 在处理视频或音频时使用的过滤器。FFmpeg 提供了许多内置的过滤器,例如裁剪、缩放、旋转、水印、颜色调整等。你可以使用 -filters 参数来指定这些过滤器,并设置它们的参数。

-filters 参数的语法如下:

ffmpeg -filters <filter1>[,<filter2>,...]

其中,<filter1><filter2> 等是你要使用的过滤器的名称。你可以使用逗号分隔符来指定多个过滤器。

例如,如果你想使用裁剪和缩放过滤器,可以使用以下命令:

ffmpeg -i input.mp4 -vf "crop=in_w-100:in_h-100,scale=1280:720" output.mp4

其中,-vf 参数用于指定视频过滤器,cropscale 是两个过滤器的名称,in_win_h 是输入视频的宽度和高度,1280720 是输出视频的宽度和高度。

FFmpeg 提供了许多内置的过滤器,例如:

  • crop:裁剪视频或音频。
  • scale:缩放视频或音频。
  • rotate:旋转视频或音频。
  • pad:填充视频或音频。
  • fps:设置视频的帧率。
  • volume:调整音频的音量。
  • atempo:调整音频的播放速度。

-pix_fmts

-pix_fmts 是 FFmpeg 的一个命令行参数,它用于指定 FFmpeg 在处理视频时使用的像素格式。FFmpeg 是一个开源的跨平台多媒体框架,它支持多种音频和视频格式的编码、解码、转码、复用、解复用、流化、过滤和播放。

-pix_fmts 参数可以用来指定 FFmpeg 在处理视频时使用的像素格式。FFmpeg 支持多种像素格式,例如 YUV、RGB、RGBA 等。你可以使用 -pix_fmts 参数来指定 FFmpeg 使用的像素格式。

-pix_fmts 参数的语法如下:

ffmpeg -pix_fmts <format1>[,<format2>,...]

其中,<format1><format2> 等是你要使用的像素格式的名称。你可以使用逗号分隔符来指定多个像素格式。

例如,如果你想使用 YUV420P 像素格式,可以使用以下命令:

ffmpeg -i input.mp4 -pix_fmts yuv420p output.mp4

其中,-i 参数用于指定输入文件,input.mp4 是输入文件的名称,output.mp4 是输出文件的名称。

FFmpeg 支持的像素格式包括:

  • yuv420p:YUV420P 像素格式。
  • yuv422p:YUV422P 像素格式。
  • yuv444p:YUV444P 像素格式。
  • rgb24:RGB24 像素格式。
  • bgr24:BGR24 像素格式。
  • rgba:RGBA 像素格式。
  • bgra:BGRA 像素格式。
  • gray:灰度像素格式。
  • gray16be:16 位灰度像素格式。
  • gray16le:16 位灰度像素格式。
  • gray8:8 位灰度像素格式。
  • gray8be:8 位灰度像素格式。
  • gray8le:8 位灰度像素格式。
  • gray16:16 位灰度像素格式。
  • gray16be:16 位灰度像素格式。

-sample_fmts

-sample_fmts 是 FFmpeg 中的一个选项,用于指定音频样本的格式。这个选项允许你指定 FFmpeg 应该支持的音频样本格式。

-sample_fmts 选项后面可以跟一个或多个样本格式,这些格式由它们的名字指定,例如 u8s16s32fltdbl 等。这些格式分别代表无符号 8 位整数、有符号 16 位整数、有符号 32 位整数、32 位浮点数和 64 位浮点数。

例如,如果你想指定 FFmpeg 应该支持无符号 8 位整数和有符号 16 位整数样本格式,你可以这样使用 -sample_fmts 选项:

bash
ffmpeg -sample_fmts u8+s16 -i input.mp3 output.wav

在这个例子中,-sample_fmts u8+s16 指定了 FFmpeg 应该支持无符号 8 位整数和有符号 16 位整数样本格式。-i input.mp3 指定了输入文件,output.wav 是输出文件。

请注意,-sample_fmts 选项通常与 -acodec 选项一起使用,以指定音频编解码器支持的样本格式。例如:

bash
ffmpeg -acodec pcm_s16le -sample_fmts s16 -i input.mp3 output.wav

在这个例子中,-acodec pcm_s16le 指定了使用 PCM(脉冲编码调制)编解码器,它支持有符号 16 位整数样本格式。-sample_fmts s16 指定了 FFmpeg 应该使用有符号 16 位整数样本格式。

总的来说,-sample_fmts 选项允许你控制 FFmpeg 在处理音频样本时的样本格式选择。

-layouts

在 FFmpeg 中,-layouts 参数用于指定音频通道的布局。通道布局(Channel Layout)描述了音频流中各个声道的排列方式。例如,单声道(mono)、立体声(stereo)、环绕声(surround)等。

-layouts 参数通常与 -ac 参数一起使用,后者用于指定音频通道的数量。例如,如果你想将音频流设置为立体声(stereo),你可以这样使用 -layouts 参数:

bash
ffmpeg -i input.mp3 -ac 2 -layouts stereo output.mp3

在这个例子中,-ac 2 指定了音频通道的数量为 2,-layouts stereo 指定了通道布局为立体声。

-layouts 参数的值可以是以下之一:

  • mono:单声道
  • stereo:立体声
  • 2.1:2.1 声道(通常包含一个前置声道、一个中置声道和一个环绕声道)
  • 4.0:4.0 声道(通常包含一个前置声道、一个中置声道、一个环绕声道和一个重低音声道)
  • 5.1:5.1 声道(通常包含一个前置声道、一个中置声道、一个环绕声道、一个重低音声道和两个侧置声道)
  • 7.1:7.1 声道(通常包含一个前置声道、一个中置声道、一个环绕声道、一个重低音声道、两个侧置声道、一个左环绕声道和一个右环绕声道)

如果你不指定 -layouts 参数,FFmpeg 将使用默认的通道布局。例如,对于立体声,默认的通道布局是 stereo

请注意,-layouts 参数的值必须与 -ac 参数指定的通道数量相匹配。例如,如果你指定了 -ac 2,那么 -layouts 的值也必须是 stereo 或其他与 2 通道相匹配的布局。

总的来说,-layouts 参数允许你在 FFmpeg 中指定音频通道的布局,这对于音频处理和转码非常重要。

-hide_banner

在 FFmpeg 中,-hide_banner 是一个全局选项,它用于在 FFmpeg 的控制台输出中隐藏版权和版本信息的横幅。这个横幅通常包含 FFmpeg 的版本号、版权声明、许可证信息以及一些其他的元数据。

当你在命令行中运行 FFmpeg 时,通常会看到一个包含这些信息的横幅。这个横幅对于大多数用户来说是无关紧要的,因为他们更关注的是 FFmpeg 的实际输出或错误信息。通过使用 -hide_banner 选项,你可以隐藏这个横幅,使输出更加简洁。

下面是一个使用 -hide_banner 选项的例子:

bash
ffmpeg -hide_banner -i input.mp4 output.avi

在这个例子中,-hide_banner 选项告诉 FFmpeg 在输出中不显示版权横幅。-i input.mp4 指定了输入文件,output.avi 是输出文件。

如果你不使用 -hide_banner 选项,FFmpeg 会在开始时显示一个横幅,如下所示:

ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9.3.1 (GCC) 20200621
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100

如果你使用 -hide_banner 选项,这个横幅将不会出现在输出中。

-v

在 FFmpeg 中,-v 参数用于设置日志级别。它控制 FFmpeg 在终端输出中的详细程度。日志级别从 quiet(不显示任何消息)到 debug(显示最详细的消息)。

-v 参数后面可以跟一个数字,表示日志级别。数字越大,输出的详细程度越高。例如:

  • -v 0-v quiet:不显示任何消息。
  • -v 16-v debug:显示最详细的消息。

如果你不指定日志级别,FFmpeg 默认会显示一些信息性消息,但不会显示调试信息。

下面是一个使用 -v 参数的例子:

bash
ffmpeg -v debug -i input.mp4 output.avi

在这个例子中,-v debug 指定了日志级别为 debug,这意味着 FFmpeg 将显示最详细的调试信息。

如果你只想看到警告和错误信息,而不想看到信息性消息,你可以使用 -v warning

bash
ffmpeg -v warning -i input.mp4 output.avi

在这个例子中,-v warning 指定了日志级别为 warning,这意味着 FFmpeg 只会显示警告和错误信息。

请注意,-v 参数的缩写形式是 -loglevel,所以你也可以使用 -loglevel 来达到相同的效果:

bash
ffmpeg -loglevel debug -i input.mp4 output.avi

这两个参数是等价的,你可以根据自己的喜好选择使用哪一个。

-ss

在 FFmpeg 中,-ss 参数用于指定输入文件中开始读取的位置。这个参数允许你从输入文件的特定时间点开始解码和处理视频或音频。

-ss 参数后面通常跟着一个时间戳,这个时间戳可以是秒数(例如 30 表示从开始位置向前 30 秒),也可以是更详细的时间格式(例如 01:23:45 表示从开始位置向前 1 小时 23 分钟 45 秒)。

下面是一个使用 -ss 参数的例子:

bash
ffmpeg -ss 00:01:30 -i input.mp4 -c copy output.mp4

在这个例子中,-ss 00:01:30 指定了从输入文件的 1 分 30 秒处开始读取。-i input.mp4 指定了输入文件,-c copy 表示复制原始编码流,output.mp4 是输出文件。

如果你想从输入文件的开头开始读取,你可以省略 -ss 参数。默认情况下,FFmpeg 会从输入文件的开始位置开始读取。

请注意,-ss 参数可能会影响到输出文件的开始时间戳,因为它会影响到 FFmpeg 从输入文件中读取的起始点。如果你的目标是剪切视频或音频的特定部分,你可能还需要结合使用 -t 参数来指定持续时间。

bash
ffmpeg -ss 00:01:30 -t 00:00:10 -i input.mp4 -c copy output.mp4

在这个例子中,-t 00:00:10 指定了持续时间为 10 秒,所以输出文件将包含从输入文件的 1 分 30 秒开始的 10 秒内容。

-metadata

在 FFmpeg 中,-metadata 参数用于设置输出文件的元数据。元数据是描述媒体内容的数据,如标题、作者、版权信息、描述等。这些元数据可以被用于搜索和组织媒体内容,以及在不同的应用程序和平台之间传输。

-metadata 参数的基本语法是:

bash
-metadata key=value

其中,key 是元数据的键,value 是与该键关联的值。例如,如果你想设置输出文件的标题,你可以使用:

bash
ffmpeg -i input.mp4 -metadata title="My Video Title" output.mp4

在这个例子中,title 是元数据的键,My Video Title 是与该键关联的值。

-metadata 参数可以多次使用,以设置多个元数据字段。例如:

bash
ffmpeg -i input.mp4 -metadata title="My Video Title" -metadata author="My Name" output.mp4

在这个例子中,我们设置了标题和作者两个元数据字段。

FFmpeg 支持许多不同的元数据键,包括但不限于:

  • title:视频或音频的标题。
  • author:视频或音频的作者。
  • copyright:版权信息。
  • comment:用户评论或描述。
  • description:更详细的描述或摘要。
  • encoder:用于编码视频或音频的应用程序或库的名称。

请注意,并非所有格式和容器都支持所有的元数据键。例如,MP4 容器支持一些常见的元数据键,但有些键可能在某些特定的格式或容器中不可用。在使用 -metadata 参数时,你应该检查你正在使用的特定格式或容器的文档,以确定哪些元数据键是有效的。

如果你想查看 FFmpeg 支持的所有元数据键,你可以使用 ffmpeg -h full 命令,然后搜索 "Metadata:" 部分。这将列出所有可用于 -metadata 参数的键。

-target

在 FFmpeg 中,-target 参数通常用于指定编码目标,这在编码过程中非常重要。目标可以是不同的编码器或格式,具体取决于你正在使用的 FFmpeg 命令。

例如,如果你使用 libx264 编码器来编码视频,-target 参数可以用来指定目标文件的类型。例如:

bash
ffmpeg -i input.mp4 -c:v libx264 -target mp4 output.mp4

在这个例子中,-target mp4 指定了目标文件的类型为 MP4。这告诉 FFmpeg 在编码过程中使用适当的设置来生成一个 MP4 文件。

然而,-target 参数的具体含义和用法可能会因你使用的 FFmpeg 版本和配置而有所不同。在某些情况下,-target 可能是一个全局参数,用于指定 FFmpeg 的目标平台或架构。例如,你可能会看到 -target-os-target-arch 参数。

如果你在使用 -target 参数时遇到问题,或者不确定它的确切含义,最好的方法是查阅 FFmpeg 的文档或向 FFmpeg 社区寻求帮助。你可以在 FFmpeg 的官方网站上找到最新的文档,或者在 FFmpeg 的邮件列表或论坛上提问。

-hq

在 FFmpeg 中,-hq 参数通常不是一个标准的参数,它可能是一个特定于某个编码器或某个特定版本的 FFmpeg 的参数。-hq 参数通常用于指示编码器或转码器使用高质量设置。

例如,如果你使用的是 libx264 编码器,-hq 参数可能会启用或禁用一些高级的优化,以提高编码质量。然而,-hq 参数的具体含义和效果可能会因编码器的不同版本和配置而有所不同。

如果你在 FFmpeg 的文档中找不到关于 -hq 参数的信息,那么它可能不是一个标准的 FFmpeg 参数。在这种情况下,你可能需要查阅相关的编码器或转码器的文档,以确定 -hq 参数的正确用法。

如果你想了解 -hq 参数的更多信息,你可以尝试在 FFmpeg 的官方文档中搜索 -hq 参数,或者查看 FFmpeg 的邮件列表或论坛,看看是否有用户分享了关于这个参数的信息。

请记住,使用 -hq 参数时,你应该确保你的 FFmpeg 版本是最新的,并且你已经查阅了相关编码器的文档,以了解 -hq 参数的正确用法。

-itsoffset

在 FFmpeg 中,-itsoffset 参数用于调整输入时间戳。它可以用来延迟或提前输入流的时间戳。这个参数对于处理时间相关的任务非常有用,比如同步音频和视频流,或者调整媒体文件的开始时间。

-itsoffset 参数的值是一个时间偏移量,可以是秒数(例如 1.5 表示 1.5 秒),也可以是时间戳格式(例如 00:01:30.000 表示 1 分 30 秒)。

例如,如果你想延迟输入流 2 秒钟,你可以这样使用 -itsoffset 参数:

bash
ffmpeg -i input.mp4 -itsoffset 2 -c copy output.mp4

在这个例子中,-itsoffset 2 将输入流的时间戳延迟了 2 秒。-c copy 表示复制流而不重新编码。

如果你想提前输入流 1 秒钟,你可以这样使用 -itsoffset 参数:

bash
ffmpeg -i input.mp4 -itsoffset -1 -c copy output.mp4

在这个例子中,-itsoffset -1 将输入流的时间戳提前了 1 秒。

请注意,-itsoffset 参数只会影响输入流的时间戳,而不会影响输出流的时间戳。如果你需要调整输出流的时间戳,你可能需要使用其他参数,如 -ss(用于设置开始时间)或 -to(用于设置结束时间)。

bash
ffmpeg -i input.mp4 -itsoffset 2 -ss 0 -c copy output.mp4

在这个例子中,-itsoffset 2 将输入流的时间戳延迟了 2 秒,-ss 0 将输出流的开始时间设置为 0(即从原始开始时间开始)。

总的来说,-itsoffset 参数允许你调整输入流的时间戳,以实现时间上的同步或调整。

-ab

在 FFmpeg 中,-ab 参数用于设置音频比特率(Audio Bitrate)。这个参数控制音频编码过程中使用的数据率,即每秒钟编码的数据量。比特率越高,音频质量通常越好,但文件大小也会更大。

-ab 参数后面通常跟着一个数字,表示比特率的值,单位是比特每秒(bps)。例如,如果你想将音频的比特率设置为 128k,你可以这样使用 -ab 参数:

bash
ffmpeg -i input.mp3 -ab 128k output.mp3

在这个例子中,-ab 128k 指定了音频的比特率为 128k。input.mp3 是输入文件,output.mp3 是输出文件。

如果你不指定比特率,FFmpeg 将使用默认的比特率。默认的比特率取决于编码器的设置,但通常是一个适中的值。

请注意,-ab 参数只影响音频流的比特率,如果你想要同时调整音频和视频的比特率,你可能需要分别使用 -b:a-b:v 参数。

bash
ffmpeg -i input.mp4 -b:a 128k -b:v 500k output.mp4

在这个例子中,-b:a 128k 设置了音频的比特率为 128k,-b:v 500k 设置了视频的比特率为 500k。

总的来说,-ab 参数允许你控制音频编码过程中使用的数据率,从而影响音频的质量和文件大小。

-ar

在 FFmpeg 中,-ar 参数用于设置音频采样率(Audio Sample Rate)。采样率定义了每秒钟从音频信号中提取并数字化的音频样本的数量。采样率越高,声音的质量通常越好,但文件大小也会更大。

-ar 参数后面通常跟着一个数字,表示采样率的值,单位是赫兹(Hz)。例如,如果你想将音频的采样率设置为 44100Hz,你可以这样使用 -ar 参数:

bash
ffmpeg -i input.wav -ar 44100 output.wav

在这个例子中,-ar 44100 指定了音频的采样率为 44100Hz。input.wav 是输入文件,output.wav 是输出文件。

如果你不指定采样率,FFmpeg 将使用默认的采样率。默认的采样率取决于编码器的设置,但通常是一个适中的值。

请注意,-ar 参数只影响音频流的采样率,如果你想要同时调整音频和视频的采样率,你可能需要分别使用 -ar:a-ar:v 参数。

bash
ffmpeg -i input.mp4 -ar:a 44100 -ar:v 25 output.mp4

在这个例子中,-ar:a 44100 设置了音频的采样率为 44100Hz,-ar:v 25 设置了视频的帧率为 25fps。

总的来说,-ar 参数允许你控制音频编码过程中使用的采样率,从而影响音频的质量和文件大小。

-ac

在 FFmpeg 中,-ac 参数用于设置音频通道数(Audio Channels)。这个参数控制音频流中包含的音频通道的数量。例如,单声道音频只有一个通道,立体声音频有两个通道,5.1 声道音频有 6 个通道(通常包括一个中心通道和左右两侧的通道,以及环绕声道)。

-ac 参数后面通常跟着一个数字,表示音频通道的数量。例如,如果你想将音频设置为立体声(两个通道),你可以这样使用 -ac 参数:

bash
ffmpeg -i input.wav -ac 2 output.wav

在这个例子中,-ac 2 指定了音频的通道数为 2,这意味着输出文件将是立体声。input.wav 是输入文件,output.wav 是输出文件。

如果你不指定通道数,FFmpeg 将使用默认的通道数。默认的通道数取决于输入文件的通道数。

请注意,-ac 参数只影响音频流的通道数,如果你想要同时调整音频和视频的通道数,你可能需要分别使用 -ac:a-ac:v 参数。

bash
ffmpeg -i input.mp4 -ac:a 2 -ac:v 0 output.mp4

在这个例子中,-ac:a 2 设置了音频的通道数为 2(立体声),-ac:v 0 表示视频流将被禁用。

总的来说,-ac 参数允许你控制音频流中包含的音频通道的数量,从而影响音频的质量和文件大小。

-an

在 FFmpeg 中,-an 参数用于禁用音频流。当你在命令行中使用 -an 参数时,FFmpeg 将不会处理输入文件中的音频流,而是直接将其从输出文件中排除。

这个参数通常与 -vn(禁用视频流)一起使用,以创建只包含视频的输出文件。

例如,如果你想从一个视频文件中提取视频(不包括音频),你可以使用 -an 参数:

bash
ffmpeg -i input.mp4 -an output.mp4

在这个例子中,-an 参数告诉 FFmpeg 不处理输入文件中的音频流,input.mp4 是输入文件,output.mp4 是输出文件。

如果你只想保留音频而不处理视频,你可以使用 -vn 参数:

bash
ffmpeg -i input.mp4 -vn output.mp3

在这个例子中,-vn 参数告诉 FFmpeg 不处理输入文件中的视频流,input.mp4 是输入文件,output.mp3 是输出文件。

请注意,-an 参数不会影响视频流,它只会禁用音频流。如果你想同时禁用音频和视频,你需要使用 -vn-an 参数。

bash
ffmpeg -i input.mp4 -vn -an output.mp3

在这个例子中,-vn-an 参数都被使用了,这意味着输出文件将只包含音频。

总的来说,-an 参数允许你在 FFmpeg 中选择性地处理音频和视频流,从而可以创建只包含所需流的输出文件。

-vn

在 FFmpeg 中,-vn 参数用于禁用视频流。当你在命令行中使用 -vn 参数时,FFmpeg 将不会处理输入文件中的视频流,而是直接将其从输出文件中排除。

这个参数通常与 -an(禁用音频流)一起使用,以创建只包含音频的输出文件。

例如,如果你想从一个视频文件中提取音频,你可以使用 -vn 参数:

bash
ffmpeg -i input.mp4 -vn output.mp3

在这个例子中,-vn 参数告诉 FFmpeg 不处理输入文件中的视频流,input.mp4 是输入文件,output.mp3 是输出文件。

如果你不指定通道数,FFmpeg 将使用默认的通道数。默认的通道数取决于输入文件的通道数。

请注意,-vn 参数不会影响音频流,它只会禁用视频流。如果你想同时禁用音频和视频,你需要使用 -an-vn 参数。

bash
ffmpeg -i input.mp4 -vn -an output.mp3

在这个例子中,-vn-an 参数都被使用了,这意味着输出文件将只包含音频。

总的来说,-vn 参数允许你在 FFmpeg 中选择性地处理视频和音频流,从而可以创建只包含所需流的输出文件。

-acodec

在 FFmpeg 中,-acodec 参数用于指定音频编解码器。这个参数允许你选择用于处理音频流的编码器。

-acodec 参数后面通常跟着编解码器的名称。例如,如果你想使用 AAC 编码器来编码音频流,你可以这样使用 -acodec 参数:

bash
ffmpeg -i input.mp4 -acodec aac output.mp4

在这个例子中,-acodec aac 指定了音频编码器为 AAC。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定编解码器,FFmpeg 将使用默认的编解码器。默认的编解码器取决于输出文件的格式和配置。

请注意,-acodec 参数只影响音频流的编解码器,如果你想要同时指定音频和视频的编解码器,你可能需要分别使用 -acodec:a-acodec:v 参数。

bash
ffmpeg -i input.mp4 -acodec:a aac -acodec:v libx264 output.mp4

在这个例子中,-acodec:a aac 设置了音频的编解码器为 AAC,-acodec:v libx264 设置了视频的编解码器为 libx264。

总的来说,-acodec 参数允许你在 FFmpeg 中选择用于处理音频流的编解码器,从而可以控制音频的质量和文件大小。

-dv1394

在 FFmpeg 中,-dv1394 参数是用于指定使用哪种 FireWire (IEEE 1394) 设备的。FireWire 是一种计算机总线标准,用于连接外部设备,如摄像头和硬盘。

-dv1394 参数后面通常跟着一个数字,该数字表示你想要使用的 FireWire 设备的索引号。索引号从 0 开始,表示第一个 FireWire 设备。

例如,如果你想使用第一个 FireWire 设备,你可以这样使用 -dv1394 参数:

bash
ffmpeg -f dv1394 -i 0 -t 10 output.mp4

在这个例子中,-f dv1394 指定了输入格式为 FireWire,-i 0 指定了使用第一个 FireWire 设备,-t 10 指定了录制 10 秒的视频,output.mp4 是输出文件。

如果你不指定设备索引号,FFmpeg 将使用默认的设备。

请注意,使用 FireWire 设备可能需要特定的权限和驱动程序,这取决于你的操作系统。此外,FireWire 设备的支持可能需要特定的硬件和软件支持。

总的来说,-dv1394 参数允许你在 FFmpeg 中选择用于捕获视频的 FireWire 设备。

-av

在 FFmpeg 中,-av 参数并不是一个标准的参数。FFmpeg 的参数通常以两个字母的缩写形式出现,如 -ac 表示音频通道数,-ar 表示音频采样率,-vf 表示视频滤镜等。

如果你是在寻找某种特定的参数或选项,请提供更多的上下文信息,以便我能够提供更准确的帮助。如果你是想了解某个特定的编码器选项或滤镜,请提供更多的细节,我会尽力提供帮助。

请注意,FFmpeg 的参数和选项可能会随着版本的更新而变化,因此建议查阅 FFmpeg 的官方文档以获取最准确的信息。

-b

在 FFmpeg 中,-b 参数用于设置视频比特率(Video Bitrate)或音频比特率(Audio Bitrate),具体取决于它后面跟着的是 -b:v 还是 -b:a

  • -b:v 用于设置视频流的比特率。它后面跟着一个数字,表示视频编码的目标比特率。例如,如果你想将视频的比特率设置为 1Mbps,你可以这样使用 -b:v 参数:
bash
ffmpeg -i input.mp4 -b:v 1M output.mp4

在这个例子中,-b:v 1M 指定了视频的比特率为 1Mbps。

  • -b:a 用于设置音频流的比特率。它后面跟着一个数字,表示音频编码的目标比特率。例如,如果你想将音频的比特率设置为 128k,你可以这样使用 -b:a 参数:
bash
ffmpeg -i input.mp4 -b:a 128k output.mp4

在这个例子中,-b:a 128k 指定了音频的比特率为 128k。

如果你不指定比特率,FFmpeg 将使用默认的比特率。默认的比特率取决于编码器的设置,但通常是一个适中的值。

请注意,-b:v-b:a 参数只影响相应的流的比特率,如果你想要同时调整音频和视频的比特率,你可能需要分别使用 -b:a-b:v 参数。

bash
ffmpeg -i input.mp4 -b:a 128k -b:v 500k output.mp4

在这个例子中,-b:a 128k 设置了音频的比特率为 128k,-b:v 500k 设置了视频的比特率为 500k。

总的来说,-b:v-b:a 参数允许你控制视频和音频编码过程中使用的数据率,从而影响视频和音频的质量和文件大小。

-b:v

在 FFmpeg 中,-b:v 参数用于设置视频流的比特率(Video Bitrate)。比特率是描述单位时间内从视频或音频信号数字化为数据流量的参数,通常以 kbps(千位每秒)为单位。比特率越高,视频质量通常越好,但文件大小也会更大。

-b:v 参数后面通常跟着一个数字,表示比特率的值,单位可以是 k(千位)、M(兆位)或 G(吉位)。例如,如果你想将视频的比特率设置为 1 兆位每秒(1Mbps),你可以这样使用 -b:v 参数:

bash
ffmpeg -i input.mp4 -b:v 1M output.mp4

在这个例子中,-b:v 1M 指定了视频的比特率为 1Mbps。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定比特率,FFmpeg 将使用默认的比特率。默认的比特率取决于编码器的设置,但通常是一个适中的值。

请注意,-b:v 参数只影响视频流的比特率,如果你想要同时调整音频和视频的比特率,你可能需要分别使用 -b:a-b:v 参数。

bash
ffmpeg -i input.mp4 -b:a 128k -b:v 500k output.mp4

在这个例子中,-b:a 128k 设置了音频的比特率为 128k,-b:v 500k 设置了视频的比特率为 500k。

总的来说,-b:v 参数允许你控制视频编码过程中使用的数据率,从而影响视频的质量和文件大小。

-b:a

在 FFmpeg 中,-b:a 参数用于设置音频流的比特率(Audio Bitrate)。比特率是描述单位时间内从音频信号数字化为数据流量的参数,通常以 kbps(千位每秒)为单位。比特率越高,音频质量通常越好,但文件大小也会更大。

-b:a 参数后面通常跟着一个数字,表示比特率的值,单位可以是 k(千位)、M(兆位)或 G(吉位)。例如,如果你想将音频的比特率设置为 128k,你可以这样使用 -b:a 参数:

bash
ffmpeg -i input.mp4 -b:a 128k output.mp4

在这个例子中,-b:a 128k 指定了音频的比特率为 128k。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定比特率,FFmpeg 将使用默认的比特率。默认的比特率取决于编码器的设置,但通常是一个适中的值。

请注意,-b:a 参数只影响音频流的比特率,如果你想要同时调整音频和视频的比特率,你可能需要分别使用 -b:a-b:v 参数。

bash
ffmpeg -i input.mp4 -b:a 128k -b:v 500k output.mp4

在这个例子中,-b:a 128k 设置了音频的比特率为 128k,-b:v 500k 设置了视频的比特率为 500k。

总的来说,-b:a 参数允许你控制音频编码过程中使用的数据率,从而影响音频的质量和文件大小。

-r

在 FFmpeg 中,-r 参数用于设置帧率(Frame Rate)。帧率是描述视频中每秒包含的帧数的参数。它决定了视频的播放速度和动画的流畅度。

-r 参数后面通常跟着一个数字,表示每秒的帧数。例如,如果你想将视频的帧率设置为 30fps(帧每秒),你可以这样使用 -r 参数:

bash
ffmpeg -i input.mp4 -r 30 output.mp4

在这个例子中,-r 30 指定了视频的帧率为 30fps。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定帧率,FFmpeg 将使用输入文件的原始帧率。

请注意,-r 参数只影响视频流的帧率,如果你想要同时调整音频和视频的帧率,你可能需要分别使用 -r:a-r:v 参数。

bash
ffmpeg -i input.mp4 -r:v 30 -r:a 48000 output.mp4

在这个例子中,-r:v 30 设置了视频的帧率为 30fps,-r:a 48000 设置了音频的采样率为 48000Hz。

总的来说,-r 参数允许你控制视频的播放速度和动画的流畅度,从而影响视频的质量和播放效果。

-s

在 FFmpeg 中,-s 参数用于设置视频的分辨率。分辨率是指视频帧的宽度和高度,通常表示为 WIDTHxHEIGHT 的形式。

例如,如果你想将视频的分辨率设置为 1920x1080(1080p),你可以这样使用 -s 参数:

bash
ffmpeg -i input.mp4 -s 1920x1080 output.mp4

在这个例子中,-s 1920x1080 指定了视频的分辨率为 1920x1080。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定分辨率,FFmpeg 将使用输入文件的原始分辨率。

请注意,-s 参数只影响视频流的分辨率,如果你想要同时调整音频和视频的分辨率,你可能需要分别使用 -s:a-s:v 参数。

bash
ffmpeg -i input.mp4 -s:v 1920x1080 -s:a 48000 output.mp4

在这个例子中,-s:v 1920x1080 设置了视频的分辨率为 1920x1080,-s:a 48000 设置了音频的采样率为 48000Hz。

总的来说,-s 参数允许你控制视频的分辨率,从而影响视频的清晰度和文件大小。

-aspect

在 FFmpeg 中,-aspect 参数用于设置视频的纵横比(Aspect Ratio)。纵横比是指视频帧的宽高比。它决定了视频在播放器中显示时的形状。

-aspect 参数后面通常跟着一个数字,表示宽高比。例如,如果你想将视频的纵横比设置为 16:9,你可以这样使用 -aspect 参数:

bash
ffmpeg -i input.mp4 -aspect 16:9 output.mp4

在这个例子中,-aspect 16:9 指定了视频的纵横比为 16:9。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定纵横比,FFmpeg 将使用输入文件的原始纵横比。

请注意,-aspect 参数只影响视频流的纵横比,如果你想要同时调整音频和视频的纵横比,你可能需要分别使用 -aspect:a-aspect:v 参数。

bash
ffmpeg -i input.mp4 -aspect:v 16:9 -aspect:a 48000 output.mp4

在这个例子中,-aspect:v 16:9 设置了视频的纵横比为 16:9,-aspect:a 48000 设置了音频的采样率为 48000Hz。

总的来说,-aspect 参数允许你控制视频的纵横比,从而影响视频在播放器中的显示形状。

-croptop

在 FFmpeg 中,-croptop 参数用于裁剪视频帧的顶部。这个参数可以用来去除视频帧顶部不需要的部分,例如黑边或标题栏。

-croptop 参数后面通常跟着一个数字,表示要裁剪的像素数量。例如,如果你想裁剪视频帧的顶部 100 像素,你可以这样使用 -croptop 参数:

bash
ffmpeg -i input.mp4 -vf "crop=iw:ih-100:0:100" output.mp4

在这个例子中,-vf "crop=iw:ih-100:0:100" 指定了裁剪操作。iw 表示输入视频的宽度,ih-100 表示输入视频的高度减去 100 像素(即去除顶部 100 像素),0 表示不裁剪左边,100 表示从顶部开始裁剪 100 像素。

请注意,-croptop 参数通常与视频滤镜(-vf)一起使用,以便在裁剪视频帧时应用其他滤镜效果。

如果你只想裁剪视频而不应用其他滤镜效果,你可以直接使用 -vf 参数:

bash
ffmpeg -i input.mp4 -vf "crop=in_w:in_h-100:0:100" output.mp4

在这个例子中,-vf "crop=in_w:in_h-100:0:100" 指定了裁剪操作,与之前的例子相同。

总的来说,-croptop 参数允许你裁剪视频帧的顶部,从而去除不需要的部分,并可能调整视频的显示比例。

-padtop

在 FFmpeg 中,-padtop 参数用于在视频帧的顶部添加填充(padding)。这个参数可以用来调整视频帧的顶部位置,以确保与其他视频帧对齐,或者在视频帧顶部添加额外的空间。

-padtop 参数后面通常跟着一个数字,表示要添加的填充像素数量。例如,如果你想在视频帧的顶部添加 100 像素的填充,你可以这样使用 -padtop 参数:

bash
ffmpeg -i input.mp4 -vf "pad=iw:ih+100:0:100:black" output.mp4

在这个例子中,-vf "pad=iw:ih+100:0:100:black" 指定了填充操作。iw 表示输入视频的宽度,ih+100 表示输入视频的高度加上 100 像素(即在顶部添加 100 像素的填充),0 表示不填充左边,100 表示从顶部开始填充 100 像素,black 表示填充的颜色为黑色。

请注意,-padtop 参数通常与视频滤镜(-vf)一起使用,以便在视频帧上添加填充时应用其他滤镜效果。

如果你只想在视频帧上添加填充而不应用其他滤镜效果,你可以直接使用 -vf 参数:

bash
ffmpeg -i input.mp4 -vf "pad=in_w:in_h+100:0:100:black" output.mp4

在这个例子中,-vf "pad=in_w:in_h+100:0:100:black" 指定了填充操作,与之前的例子相同。

总的来说,-padtop 参数允许你在视频帧的顶部添加填充,从而调整视频帧的位置,或者在视频帧上添加额外的空间。

-bt

在 FFmpeg 中,-bt 参数通常与视频编码相关,用于设置视频编码的码率控制模式。这个参数可以用来控制编码器在编码视频时如何分配比特率。

-bt 参数后面通常跟着一个数字,表示码率的值,单位是比特每秒(bps)。例如,如果你想将视频的码率设置为 1Mbps,你可以这样使用 -bt 参数:

bash
ffmpeg -i input.mp4 -bt 1M output.mp4

在这个例子中,-bt 1M 指定了视频的码率为 1Mbps。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定码率,FFmpeg 将使用默认的码率。默认的码率取决于编码器的设置,但通常是一个适中的值。

请注意,-bt 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-bt 参数在 x264 编码器中用于设置码率因子,而在 x265 编码器中用于设置目标码率。

总的来说,-bt 参数允许你在 FFmpeg 中控制视频编码的码率分配,从而影响视频的质量和文件大小。

-maxrate

在 FFmpeg 中,-maxrate 参数用于设置视频编码的最大码率。最大码率是编码器在编码视频时可以使用的最大数据率。如果视频的实际比特率超过了这个值,编码器将尝试降低比特率以保持在最大码率以内。

-maxrate 参数后面通常跟着一个数字,表示最大码率的值,单位是比特每秒(bps)。例如,如果你想将视频的最大码率设置为 1Mbps,你可以这样使用 -maxrate 参数:

bash
ffmpeg -i input.mp4 -maxrate 1M output.mp4

在这个例子中,-maxrate 1M 指定了视频的最大码率为 1Mbps。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定最大码率,FFmpeg 将使用默认的最大码率。默认的最大码率取决于编码器的设置,但通常是一个适中的值。

请注意,-maxrate 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-maxrate 参数在 x264 编码器中用于设置最大码率,而在 x265 编码器中用于设置最大码率。

总的来说,-maxrate 参数允许你在 FFmpeg 中控制视频编码的最大码率,从而影响视频的质量和文件大小。

-minrate

在 FFmpeg 中,-minrate 参数用于设置视频编码的最小码率。最小码率是编码器在编码视频时可以使用的最小数据率。如果视频的实际比特率低于这个值,编码器将尝试提高比特率以保持在最小码率以上。

-minrate 参数后面通常跟着一个数字,表示最小码率的值,单位是比特每秒(bps)。例如,如果你想将视频的最小码率设置为 1Mbps,你可以这样使用 -minrate 参数:

bash
ffmpeg -i input.mp4 -minrate 1M output.mp4

在这个例子中,-minrate 1M 指定了视频的最小码率为 1Mbps。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定最小码率,FFmpeg 将使用默认的最小码率。默认的最小码率取决于编码器的设置,但通常是一个适中的值。

请注意,-minrate 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-minrate 参数在 x264 编码器中用于设置最小码率,而在 x265 编码器中用于设置最小码率。

总的来说,-minrate 参数允许你在 FFmpeg 中控制视频编码的最小码率,从而影响视频的质量和文件大小。

-bufsize

在 FFmpeg 中,-bufsize 参数用于设置视频编码的缓冲区大小。缓冲区大小是编码器在编码视频时用于存储未编码视频帧的缓冲区的大小。这个缓冲区的大小决定了编码器可以处理的未编码视频数据的最大量。

-bufsize 参数后面通常跟着一个数字,表示缓冲区大小的值,单位是比特(bit)。例如,如果你想将视频的缓冲区大小设置为 2Mbit,你可以这样使用 -bufsize 参数:

bash
ffmpeg -i input.mp4 -bufsize 2M output.mp4

在这个例子中,-bufsize 2M 指定了视频的缓冲区大小为 2Mbit。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定缓冲区大小,FFmpeg 将使用默认的缓冲区大小。默认的缓冲区大小取决于编码器的设置,但通常是一个适中的值。

请注意,-bufsize 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-bufsize 参数在 x264 编码器中用于设置缓冲区大小,而在 x265 编码器中用于设置缓冲区大小。

总的来说,-bufsize 参数允许你在 FFmpeg 中控制视频编码的缓冲区大小,从而影响视频的编码效率和文件大小。

-vcodec

在 FFmpeg 中,-vcodec 参数用于指定视频编解码器。这个参数允许你选择用于处理视频流的编码器。

-vcodec 参数后面通常跟着编解码器的名称。例如,如果你想使用 H.264 编码器来编码视频流,你可以这样使用 -vcodec 参数:

bash
ffmpeg -i input.mp4 -vcodec libx264 output.mp4

在这个例子中,-vcodec libx264 指定了视频编码器为 libx264。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定编解码器,FFmpeg 将使用默认的编解码器。默认的编解码器取决于输出文件的格式和配置。

请注意,-vcodec 参数只影响视频流的编解码器,如果你想要同时指定音频和视频的编解码器,你可能需要分别使用 -vcodec-acodec 参数。

bash
ffmpeg -i input.mp4 -vcodec libx264 -acodec aac output.mp4

在这个例子中,-vcodec libx264 设置了视频的编码器为 libx264,-acodec aac 设置了音频的编码器为 AAC。

总的来说,-vcodec 参数允许你在 FFmpeg 中选择用于处理视频流的编解码器,从而可以控制视频的质量和文件大小。

-pass

在 FFmpeg 中,-pass 参数用于控制多传(Multi-pass)编码过程。多传编码是一种处理视频编码的技术,它将编码过程分为多个阶段,每个阶段都使用不同的编码设置。这样可以提高编码的效率和质量。

-pass 参数后面通常跟着一个数字,表示当前的编码传数。例如,如果你正在执行两传编码过程中的第一传,你可以这样使用 -pass 参数:

bash
ffmpeg -i input.mp4 -pass 1 -an -f rawvideo -y /dev/null

在这个例子中,-pass 1 指定了当前的编码传数为 1。-an 参数用于禁用音频流,-f rawvideo 参数用于输出未压缩的原始视频流,/dev/null 是一个特殊的文件,写入它的数据会被丢弃。

在多传编码中,通常会执行两到三次编码过程。第一次传通常用于分析视频内容,第二次传使用更优的编码设置,第三次传(如果存在)用于进一步优化视频质量。

在执行多传编码时,你需要为每一传指定不同的输出文件和编码设置。例如:

bash
# 第一传
ffmpeg -i input.mp4 -pass 1 -an -f rawvideo -y /dev/null

# 第二传
ffmpeg -i input.mp4 -pass 2 -acodec aac -vcodec libx264 output.mp4

在这个例子中,第一传禁用了音频流,第二传启用了音频和视频流,并指定了音频编码器为 AAC 和视频编码器为 libx264。

请注意,多传编码过程可能会增加编码时间,因为每一传都需要对视频进行完整的扫描。此外,多传编码通常用于需要高质量输出和控制编码过程的场合,例如制作发布质量的视频。

总的来说,-pass 参数在 FFmpeg 中用于控制多传编码过程,它允许你在编码过程中使用不同的编码设置,从而提高编码的效率和质量。

-passlogfile

在 FFmpeg 中,-passlogfile 参数用于指定多传编码过程中用于存储日志文件的文件名。多传编码通常涉及到两到三次编码过程,每次编码过程都会生成一些中间数据,这些数据可以被用于下一次编码过程以提高效率。

-passlogfile 参数后面通常跟着一个文件名,FFmpeg 会将多传编码的中间数据写入到这个文件中。这样,在后续的编码过程中,FFmpeg 可以读取这个文件来获取之前编码过程的中间数据,从而提高编码效率。

例如,如果你正在执行两传编码过程,并且想要将日志文件存储在名为 ffmpeg2pass 的文件中,你可以这样使用 -passlogfile 参数:

bash
# 第一传
ffmpeg -i input.mp4 -pass 1 -an -f rawvideo -passlogfile ffmpeg2pass -y /dev/null

# 第二传
ffmpeg -i input.mp4 -pass 2 -acodec aac -vcodec libx264 -passlogfile ffmpeg2pass output.mp4

在这个例子中,-passlogfile ffmpeg2pass 指定了日志文件的名称为 ffmpeg2pass。第一传和第二传都使用了相同的日志文件名,这样第二传就可以读取第一传生成的日志文件来获取之前编码过程的中间数据。

请注意,-passlogfile 参数必须在所有 -pass 参数之前指定,以确保日志文件的正确使用。此外,日志文件通常包含一些二进制数据,不适合直接查看或编辑。

总的来说,-passlogfile 参数在 FFmpeg 中用于指定多传编码过程中用于存储日志文件的文件名,它可以帮助 FFmpeg 在多传编码过程中更有效地利用之前编码过程的中间数据。

-g

在 FFmpeg 中,-g 参数用于设置关键帧之间的间隔,也称为 GOP(Group of Pictures)大小。GOP 是视频编码中的一个概念,它定义了两个关键帧之间的帧数。关键帧是视频中的特殊帧,它们包含完整的图像信息,而非前后帧之间的差异信息。

-g 参数后面通常跟着一个数字,表示关键帧之间的帧数。例如,如果你想将 GOP 大小设置为 30 帧,你可以这样使用 -g 参数:

bash
ffmpeg -i input.mp4 -g 30 output.mp4

在这个例子中,-g 30 指定了 GOP 大小为 30 帧。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 GOP 大小,FFmpeg 将使用默认的 GOP 大小。默认的 GOP 大小取决于编码器的设置,但通常是一个适中的值。

请注意,-g 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-g 参数在 x264 编码器中用于设置 GOP 大小,而在 x265 编码器中用于设置 GOP 大小。

总的来说,-g 参数允许你在 FFmpeg 中控制视频编码的 GOP 大小,从而影响视频的播放和解码效率。

-intra

在 FFmpeg 中,-intra 参数用于启用或禁用帧内预测编码。帧内预测编码是一种视频编码技术,它允许编码器在编码视频帧时使用前后的帧来预测当前帧的数据,而不是对每个帧都进行完整的编码。

-intra 参数后面通常跟着一个布尔值,true 表示启用帧内预测编码,false 表示禁用帧内预测编码。例如,如果你想启用帧内预测编码,你可以这样使用 -intra 参数:

bash
ffmpeg -i input.mp4 -intra output.mp4

在这个例子中,-intra 启用了帧内预测编码。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 -intra 参数,FFmpeg 将使用默认的帧内预测编码设置。默认情况下,帧内预测编码通常是启用的。

请注意,-intra 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-intra 参数在 x264 编码器中用于启用或禁用帧内预测编码,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-intra 参数允许你在 FFmpeg 中控制帧内预测编码的使用,从而影响视频的编码效率和质量。

-qscale

在 FFmpeg 中,-qscale 参数用于设置编码器的量化缩放值。量化缩放值决定了编码器在编码过程中使用的量化步长,它影响了视频的质量和文件大小。量化步长越小,视频的质量越高,但文件大小也越大。

-qscale 参数后面通常跟着一个数字,表示量化缩放值。例如,如果你想将量化缩放值设置为 2,你可以这样使用 -qscale 参数:

bash
ffmpeg -i input.mp4 -qscale 2 output.mp4

在这个例子中,-qscale 2 指定了量化缩放值为 2。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定量化缩放值,FFmpeg 将使用默认的量化缩放值。默认的量化缩放值取决于编码器的设置,但通常是一个适中的值。

请注意,-qscale 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-qscale 参数在 x264 编码器中用于设置量化缩放值,而在 x265 编码器中用于设置量化缩放值。

总的来说,-qscale 参数允许你在 FFmpeg 中控制视频编码的量化缩放值,从而影响视频的质量和文件大小。

-qmin

在 FFmpeg 中,-qmin 参数用于设置视频编码的最小量化值。最小量化值是编码器在编码视频时可以使用的最小量化参数。量化参数越大,视频的质量越低,但文件大小越小。量化参数越小,视频的质量越高,但文件大小可能更大。

-qmin 参数后面通常跟着一个数字,表示最小量化值。例如,如果你想将最小量化值设置为 2,你可以这样使用 -qmin 参数:

bash
ffmpeg -i input.mp4 -qmin 2 output.mp4

在这个例子中,-qmin 2 指定了最小量化值为 2。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定最小量化值,FFmpeg 将使用默认的最小量化值。默认的最小量化值取决于编码器的设置,但通常是一个适中的值。

请注意,-qmin 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-qmin 参数在 x264 编码器中用于设置最小量化值,而在 x265 编码器中用于设置最小量化值。

总的来说,-qmin 参数允许你在 FFmpeg 中控制视频编码的最小量化值,从而影响视频的质量和文件大小。

-qmax

在 FFmpeg 中,-qmax 参数用于设置视频编码的最大量化值。最大量化值是编码器在编码视频时可以使用的最大量化参数。量化参数越大,视频的质量越低,但文件大小越小。量化参数越小,视频的质量越高,但文件大小可能更大。

-qmax 参数后面通常跟着一个数字,表示最大量化值。例如,如果你想将最大量化值设置为 26,你可以这样使用 -qmax 参数:

bash
ffmpeg -i input.mp4 -qmax 26 output.mp4

在这个例子中,-qmax 26 指定了最大量化值为 26。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定最大量化值,FFmpeg 将使用默认的最大量化值。默认的最大量化值取决于编码器的设置,但通常是一个适中的值。

请注意,-qmax 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-qmax 参数在 x264 编码器中用于设置最大量化值,而在 x265 编码器中用于设置最大量化值。

总的来说,-qmax 参数允许你在 FFmpeg 中控制视频编码的最大量化值,从而影响视频的质量和文件大小。

-qdiff

在 FFmpeg 中,-qdiff 参数用于设置视频编码的量化值差。量化值差定义了相邻宏块的量化值之间的最大允许差异。这个参数可以帮助编码器在保持视频质量的同时,进一步优化文件大小。

-qdiff 参数后面通常跟着一个数字,表示量化值差。例如,如果你想将量化值差设置为 4,你可以这样使用 -qdiff 参数:

bash
ffmpeg -i input.mp4 -qdiff 4 output.mp4

在这个例子中,-qdiff 4 指定了量化值差为 4。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定量化值差,FFmpeg 将使用默认的量化值差。默认的量化值差取决于编码器的设置,但通常是一个适中的值。

请注意,-qdiff 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-qdiff 参数在 x264 编码器中用于设置量化值差,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-qdiff 参数允许你在 FFmpeg 中控制视频编码的量化值差,从而影响视频的编码效率和文件大小。

-qcomp

在 FFmpeg 中,-qcomp 参数用于设置视频编码的量化值补偿。量化值补偿是编码器在编码视频时对量化值进行的额外调整,以进一步控制视频的质量。

-qcomp 参数后面通常跟着一个数字,表示量化值补偿的值。例如,如果你想将量化值补偿设置为 0.6,你可以这样使用 -qcomp 参数:

bash
ffmpeg -i input.mp4 -qcomp 0.6 output.mp4

在这个例子中,-qcomp 0.6 指定了量化值补偿为 0.6。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定量化值补偿,FFmpeg 将使用默认的量化值补偿。默认的量化值补偿取决于编码器的设置,但通常是一个适中的值。

请注意,-qcomp 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-qcomp 参数在 x264 编码器中用于设置量化值补偿,而在 x265 编码器中用于设置量化值补偿。

总的来说,-qcomp 参数允许你在 FFmpeg 中控制视频编码的量化值补偿,从而影响视频的质量和文件大小。

-rc_init_cplx

在 FFmpeg 中,-rc_init_cplx 参数用于设置初始复杂度(Initial Complexity)的值,它是 H.264 编码器中的一个参数,用于控制编码器的初始复杂度。

初始复杂度是 H.264 编码器中的一个概念,它影响了编码器在开始编码过程时的行为。较高的初始复杂度意味着编码器在开始时会更积极地尝试寻找最佳的编码方式,这可能会导致更高的编码效率和更好的视频质量。然而,如果初始复杂度过高,编码器可能会在开始时花费过多的时间来寻找最佳的编码方式,这可能会导致编码过程的延迟。

-rc_init_cplx 参数后面通常跟着一个数字,表示初始复杂度的值。例如,如果你想将初始复杂度设置为 0.6,你可以这样使用 -rc_init_cplx 参数:

bash
ffmpeg -i input.mp4 -rc_init_cplx 0.6 output.mp4

在这个例子中,-rc_init_cplx 0.6 指定了初始复杂度为 0.6。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定初始复杂度,FFmpeg 将使用默认的初始复杂度。默认的初始复杂度取决于编码器的设置,但通常是一个适中的值。

请注意,-rc_init_cplx 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-rc_init_cplx 参数在 x264 编码器中用于设置初始复杂度,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-rc_init_cplx 参数允许你在 FFmpeg 中控制 H.264 编码的初始复杂度,从而影响视频的编码效率和质量。

-b_qfactor

在 FFmpeg 中,-b_qfactor 参数用于设置量化因子(Quality Factor),它是 H.264 编码器中的一个参数,用于控制编码器的量化步长。量化因子越大,编码器使用的量化步长越小,视频的质量越高,但文件大小越大。量化因子越小,编码器使用的量化步长越大,视频的质量越低,但文件大小越小。

-b_qfactor 参数后面通常跟着一个数字,表示量化因子的值。例如,如果你想将量化因子设置为 1.0,你可以这样使用 -b_qfactor 参数:

bash
ffmpeg -i input.mp4 -b_qfactor 1.0 output.mp4

在这个例子中,-b_qfactor 1.0 指定了量化因子为 1.0。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定量化因子,FFmpeg 将使用默认的量化因子。默认的量化因子取决于编码器的设置,但通常是一个适中的值。

请注意,-b_qfactor 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-b_qfactor 参数在 x264 编码器中用于设置量化因子,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-b_qfactor 参数允许你在 FFmpeg 中控制 H.264 编码的量化因子,从而影响视频的质量和文件大小。

-i_qfactor

在 FFmpeg 中,-i_qfactor 参数用于设置帧内(Intra)帧的量化因子。量化因子是 H.263 和 MPEG-4 编码器中的一个参数,用于控制帧内帧的编码质量。量化因子越大,帧内帧的质量越高,但文件大小越大。量化因子越小,帧内帧的质量越低,但文件大小越小。

-i_qfactor 参数后面通常跟着一个数字,表示量化因子的值。例如,如果你想将帧内帧的量化因子设置为 0.71,你可以这样使用 -i_qfactor 参数:

bash
ffmpeg -i input.mp4 -i_qfactor 0.71 output.mp4

在这个例子中,-i_qfactor 0.71 指定了帧内帧的量化因子为 0.71。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定量化因子,FFmpeg 将使用默认的量化因子。默认的量化因子取决于编码器的设置,但通常是一个适中的值。

请注意,-i_qfactor 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-i_qfactor 参数在 x264 编码器中可能没有直接对应的参数,而在 MPEG-4 编码器中可能有类似的参数。

总的来说,-i_qfactor 参数允许你在 FFmpeg 中控制帧内帧的量化因子,从而影响视频的质量和文件大小。

-b_qoffset

在 FFmpeg 中,-b_qoffset 参数用于设置量化偏移(QOffset),它是 H.264 编码器中的一个参数,用于控制编码器的量化步长。量化偏移是一个浮点数,它可以用来调整量化步长的整体值。

-b_qoffset 参数后面通常跟着一个浮点数,表示量化偏移的值。例如,如果你想将量化偏移设置为 1.0,你可以这样使用 -b_qoffset 参数:

bash
ffmpeg -i input.mp4 -b_qoffset 1.0 output.mp4

在这个例子中,-b_qoffset 1.0 指定了量化偏移为 1.0。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定量化偏移,FFmpeg 将使用默认的量化偏移。默认的量化偏移取决于编码器的设置,但通常是一个适中的值。

请注意,-b_qoffset 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-b_qoffset 参数在 x264 编码器中用于设置量化偏移,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-b_qoffset 参数允许你在 FFmpeg 中控制 H.264 编码的量化偏移,从而影响视频的编码效率和质量。

-rc_eq

在 FFmpeg 中,-rc_eq 参数用于设置恒定量化参数(Constant Rate Factor, CRF)的等价模式。CRF 是一种视频编码模式,它允许编码器根据视频内容自动调整量化参数,以达到特定的编码质量。

-rc_eq 参数后面通常跟着一个字符串,表示恒定量化参数的等价模式。例如,如果你想启用恒定量化参数的等价模式,你可以这样使用 -rc_eq 参数:

bash
ffmpeg -i input.mp4 -rc_eq 'blurCplx' output.mp4

在这个例子中,-rc_eq 'blurCplx' 启用了恒定量化参数的等价模式,并指定了使用 blurCplx 等价模式。input.mp4 是输入文件,output.mp4 是输出文件。

请注意,-rc_eq 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-rc_eq 参数在 x264 编码器中用于设置恒定量化参数的等价模式,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-rc_eq 参数允许你在 FFmpeg 中控制恒定量化参数的等价模式,从而影响视频的编码效率和质量。

-rc_override

在 FFmpeg 中,-rc_override 参数用于覆盖恒定量化参数(Constant Rate Factor, CRF)的默认行为。CRF 是一种视频编码模式,它允许编码器根据视频内容自动调整量化参数,以达到特定的编码质量。

-rc_override 参数后面通常跟着一个字符串,表示要覆盖的默认行为。例如,如果你想覆盖恒定量化参数的默认行为,你可以这样使用 -rc_override 参数:

bash
ffmpeg -i input.mp4 -rc_override 'blurCplx' output.mp4

在这个例子中,-rc_override 'blurCplx' 覆盖了恒定量化参数的默认行为,并指定了使用 blurCplx 覆盖模式。input.mp4 是输入文件,output.mp4 是输出文件。

请注意,-rc_override 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-rc_override 参数在 x264 编码器中用于覆盖恒定量化参数的默认行为,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-rc_override 参数允许你在 FFmpeg 中控制恒定量化参数的默认行为,从而影响视频的编码效率和质量。

-me

在 FFmpeg 中,-me 参数用于设置运动估计方法。运动估计是视频编码中的一个重要步骤,它用于预测和参考帧之间的运动。不同的运动估计方法有不同的性能和质量,选择合适的方法可以提高编码效率和视频质量。

-me 参数后面通常跟着一个数字或字符串,表示所需的运动估计方法。例如,如果你想使用全像素运动估计(Full Pixel Motion Estimation),你可以这样使用 -me 参数:

bash
ffmpeg -i input.mp4 -me full output.mp4

在这个例子中,-me full 指定了使用全像素运动估计。input.mp4 是输入文件,output.mp4 是输出文件。

请注意,-me 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-me 参数在 x264 编码器中用于设置运动估计方法,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-me 参数允许你在 FFmpeg 中控制运动估计方法,从而影响视频的编码效率和质量。

-dct_algo

在 FFmpeg 中,-dct_algo 参数用于设置离散余弦变换(Discrete Cosine Transform, DCT)的算法。DCT 是一种在视频编码中常用的变换,它可以将图像数据从空间域转换到频率域,从而进行高效的压缩。

-dct_algo 参数后面通常跟着一个数字或字符串,表示所需的 DCT 算法。例如,如果你想使用快速离散余弦变换(Fast Discrete Cosine Transform, FDCT),你可以这样使用 -dct_algo 参数:

bash
ffmpeg -i input.mp4 -dct_algo 3 output.mp4

在这个例子中,-dct_algo 3 指定了使用快速离散余弦变换。input.mp4 是输入文件,output.mp4 是输出文件。

请注意,-dct_algo 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-dct_algo 参数在 x264 编码器中用于设置 DCT 算法,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-dct_algo 参数允许你在 FFmpeg 中控制 DCT 算法,从而影响视频的编码效率和质量。

-idct_algo

在 FFmpeg 中,-idct_algo 参数用于设置逆离散余弦变换(Inverse Discrete Cosine Transform, IDCT)的算法。IDCT 是 DCT 的逆变换,它将频率域的数据转换回空间域,以便进行解码和显示。

-idct_algo 参数后面通常跟着一个数字或字符串,表示所需的 IDCT 算法。例如,如果你想使用快速逆离散余弦变换(Fast Inverse Discrete Cosine Transform, IIDCT),你可以这样使用 -idct_algo 参数:

bash
ffmpeg -i input.mp4 -idct_algo 3 output.mp4

在这个例子中,-idct_algo 3 指定了使用快速逆离散余弦变换。input.mp4 是输入文件,output.mp4 是输出文件。

请注意,-idct_algo 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-idct_algo 参数在 x264 编码器中用于设置 IDCT 算法,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-idct_algo 参数允许你在 FFmpeg 中控制 IDCT 算法,从而影响视频的解码效率和质量。

-er

在 FFmpeg 中,-er 参数用于设置错误恢复(Error Resilience)的级别。错误恢复是一种视频编码技术,它允许编码器在丢失一些数据的情况下仍然能够生成一个可用的视频流。

-er 参数后面通常跟着一个数字或字符串,表示所需的错误恢复级别。例如,如果你想使用较高的错误恢复级别,你可以这样使用 -er 参数:

bash
ffmpeg -i input.mp4 -er 3 output.mp4

在这个例子中,-er 3 指定了错误恢复级别为 3。input.mp4 是输入文件,output.mp4 是输出文件。

请注意,-er 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-er 参数在 x264 编码器中用于设置错误恢复级别,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-er 参数允许你在 FFmpeg 中控制错误恢复的级别,从而影响视频的编码效率和质量。

-ec

在 FFmpeg 中,-ec 参数用于设置错误 concealment(错误掩蔽)的级别。错误掩蔽是一种视频编码技术,它允许编码器在丢失一些数据的情况下仍然能够生成一个可用的视频流。

-ec 参数后面通常跟着一个数字或字符串,表示所需的错误掩蔽级别。例如,如果你想使用较高的错误掩蔽级别,你可以这样使用 -ec 参数:

bash
ffmpeg -i input.mp4 -ec 3 output.mp4

在这个例子中,-ec 3 指定了错误掩蔽级别为 3。input.mp4 是输入文件,output.mp4 是输出文件。

请注意,-ec 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-ec 参数在 x264 编码器中用于设置错误掩蔽级别,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-ec 参数允许你在 FFmpeg 中控制错误掩蔽的级别,从而影响视频的编码效率和质量。

-bf

在 FFmpeg 中,-bf 参数用于设置帧间预测(B 帧)的数量。B 帧是视频编码中的一个概念,它允许编码器在两个非连续的帧之间进行预测,从而提高视频的压缩效率。

-bf 参数后面通常跟着一个数字,表示帧间预测的数量。例如,如果你想设置 3 个 B 帧,你可以这样使用 -bf 参数:

bash
ffmpeg -i input.mp4 -bf 3 output.mp4

在这个例子中,-bf 3 指定了使用 3 个 B 帧。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 -bf 参数,FFmpeg 将使用默认的帧间预测数量。默认的帧间预测数量取决于编码器的设置,但通常是一个适中的值。

请注意,-bf 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-bf 参数在 x264 编码器中用于设置帧间预测的数量,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-bf 参数允许你在 FFmpeg 中控制帧间预测的数量,从而影响视频的编码效率和质量。

-mbd

在 FFmpeg 中,-mbd 参数用于设置宏块决策(Macroblock Decision)的模式。宏块决策是视频编码中的一个重要步骤,它决定了如何将图像分割成小的块(宏块),并为每个宏块分配一个运动矢量。

-mbd 参数后面通常跟着一个字符串,表示宏块决策的模式。例如,如果你想使用简单的宏块决策模式,你可以这样使用 -mbd 参数:

bash
ffmpeg -i input.mp4 -mbd simple output.mp4

在这个例子中,-mbd simple 指定了使用简单的宏块决策模式。input.mp4 是输入文件,output.mp4 是输出文件。

请注意,-mbd 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-mbd 参数在 x264 编码器中用于设置宏块决策的模式,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-mbd 参数允许你在 FFmpeg 中控制宏块决策的模式,从而影响视频的编码效率和质量。

-4mv

在 FFmpeg 中,-4mv 参数用于启用或禁用四运动矢量(4MV)的使用。四运动矢量是一种视频编码技术,它允许编码器在每个宏块中使用四个运动矢量,而不是通常的两个。

-4mv 参数后面通常跟着一个布尔值,true 表示启用四运动矢量,false 表示禁用四运动矢量。例如,如果你想启用四运动矢量,你可以这样使用 -4mv 参数:

bash
ffmpeg -i input.mp4 -4mv true output.mp4

在这个例子中,-4mv true 启用了四运动矢量。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 -4mv 参数,FFmpeg 将使用默认的四运动矢量设置。默认情况下,四运动矢量通常是禁用的。

请注意,-4mv 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-4mv 参数在 x264 编码器中用于启用或禁用四运动矢量,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-4mv 参数允许你在 FFmpeg 中控制四运动矢量的使用,从而影响视频的编码效率和质量。

-part

在 FFmpeg 中,-part 参数用于启用或禁用划分(Partition)模式。划分模式是一种视频编码技术,它允许编码器在编码过程中将图像划分为不同的区域,以便于后续的编码过程。

-part 参数后面通常跟着一个布尔值,true 表示启用划分模式,false 表示禁用划分模式。例如,如果你想启用划分模式,你可以这样使用 -part 参数:

bash
ffmpeg -i input.mp4 -part true output.mp4

在这个例子中,-part true 启用了划分模式。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 -part 参数,FFmpeg 将使用默认的划分模式设置。默认情况下,划分模式通常是启用的。

请注意,-part 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-part 参数在 x264 编码器中用于启用或禁用划分模式,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-part 参数允许你在 FFmpeg 中控制划分模式的使用,从而影响视频的编码效率和质量。

-bug

在 FFmpeg 中,-bug 参数用于启用或禁用编码器的 bug 修复。Bug 修复是编码器中用于修复已知问题的功能,这些问题可能会影响编码的质量或效率。

-bug 参数后面通常跟着一个布尔值,true 表示启用 bug 修复,false 表示禁用 bug 修复。例如,如果你想启用 bug 修复,你可以这样使用 -bug 参数:

bash
ffmpeg -i input.mp4 -bug true output.mp4

在这个例子中,-bug true 启用了 bug 修复。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 -bug 参数,FFmpeg 将使用默认的 bug 修复设置。默认情况下,bug 修复通常是启用的。

请注意,-bug 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-bug 参数在 x264 编码器中用于启用或禁用 bug 修复,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-bug 参数允许你在 FFmpeg 中控制 bug 修复的使用,从而影响视频的编码效率和质量。

-strict

在 FFmpeg 中,-strict 参数用于设置严格的标准兼容性。这个参数允许你选择是否遵循某些严格的标准,以确保与某些旧的或不兼容的编码器或容器格式兼容。

-strict 参数后面通常跟着一个数字或字符串,表示所需的严格标准兼容性级别。例如,如果你想启用严格的标准兼容性,你可以这样使用 -strict 参数:

bash
ffmpeg -i input.mp4 -strict experimental output.mp4

在这个例子中,-strict experimental 启用了实验性的严格标准兼容性。input.mp4 是输入文件,output.mp4 是输出文件。

请注意,-strict 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-strict 参数在 x264 编码器中用于设置严格的标准兼容性,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-strict 参数允许你在 FFmpeg 中控制严格的标准兼容性,从而影响视频的编码兼容性和质量。

-aic

在 FFmpeg 中,-aic 参数是一个实验性的参数,用于设置音频智能编码(Audio Intelligent Coding)的模式。音频智能编码是一种音频编码技术,它可以根据音频内容的特性自动调整编码参数,以提高音频质量。

-aic 参数后面通常跟着一个数字或字符串,表示所需的音频智能编码模式。例如,如果你想启用音频智能编码,你可以这样使用 -aic 参数:

bash
ffmpeg -i input.mp3 -aic 1 output.mp3

在这个例子中,-aic 1 启用了音频智能编码。input.mp3 是输入文件,output.mp3 是输出文件。

请注意,-aic 参数是实验性的,可能在未来的 FFmpeg 版本中被移除或更改。此外,-aic 参数的具体含义和用法可能会根据编码器的不同而有所不同。

总的来说,-aic 参数允许你在 FFmpeg 中控制音频智能编码的模式,从而影响音频的编码效率和质量。

-umv

在 FFmpeg 中,-umv 参数用于启用或禁用无运动矢量(Unidirectional Motion Vectors)的使用。无运动矢量是一种视频编码技术,它允许编码器在每个宏块中只使用一个运动矢量,而不是通常的两个。

-umv 参数后面通常跟着一个布尔值,true 表示启用无运动矢量,false 表示禁用无运动矢量。例如,如果你想启用无运动矢量,你可以这样使用 -umv 参数:

bash
ffmpeg -i input.mp4 -umv true output.mp4

在这个例子中,-umv true 启用了无运动矢量。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 -umv 参数,FFmpeg 将使用默认的无运动矢量设置。默认情况下,无运动矢量通常是禁用的。

请注意,-umv 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-umv 参数在 x264 编码器中用于启用或禁用无运动矢量,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-umv 参数允许你在 FFmpeg 中控制无运动矢量的使用,从而影响视频的编码效率和质量。

-deinterlace

在 FFmpeg 中,-deinterlace 参数用于启用或禁用去隔行扫描(Deinterlacing)的处理。去隔行扫描是视频处理中的一个步骤,它将隔行扫描的视频(例如,从模拟摄像机捕获的视频)转换为逐行扫描的视频。

-deinterlace 参数后面通常跟着一个布尔值,true 表示启用去隔行扫描,false 表示禁用去隔行扫描。例如,如果你想启用去隔行扫描,你可以这样使用 -deinterlace 参数:

bash
ffmpeg -i input.mp4 -deinterlace true output.mp4

在这个例子中,-deinterlace true 启用了去隔行扫描。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 -deinterlace 参数,FFmpeg 将使用默认的去隔行扫描设置。默认情况下,去隔行扫描通常是启用的。

请注意,-deinterlace 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-deinterlace 参数在 x264 编码器中用于启用或禁用去隔行扫描,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-deinterlace 参数允许你在 FFmpeg 中控制去隔行扫描的处理,从而影响视频的播放效果和质量。

-interlace

在 FFmpeg 中,-interlace 参数用于启用或禁用隔行扫描(Interlacing)的处理。隔行扫描是一种视频扫描模式,其中每秒显示一帧的奇数行,然后显示一帧的偶数行。这种模式在早期的电视和视频设备上广泛使用。

-interlace 参数后面通常跟着一个布尔值,true 表示启用隔行扫描,false 表示禁用隔行扫描。例如,如果你想启用隔行扫描,你可以这样使用 -interlace 参数:

bash
ffmpeg -i input.mp4 -interlace true output.mp4

在这个例子中,-interlace true 启用了隔行扫描。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 -interlace 参数,FFmpeg 将使用默认的隔行扫描设置。默认情况下,隔行扫描通常是禁用的。

请注意,-interlace 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-interlace 参数在 x264 编码器中用于启用或禁用隔行扫描,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-interlace 参数允许你在 FFmpeg 中控制隔行扫描的处理,从而影响视频的播放效果和质量。

-psnr

在 FFmpeg 中,-psnr 参数用于启用或禁用峰值信噪比(Peak Signal-to-Noise Ratio, PSNR)的计算。PSNR 是一种衡量图像质量的指标,它表示在不考虑失真的情况下,原始图像和重建图像之间的最大差异。

-psnr 参数后面通常跟着一个布尔值,true 表示启用 PSNR 计算,false 表示禁用 PSNR 计算。例如,如果你想启用 PSNR 计算,你可以这样使用 -psnr 参数:

bash
ffmpeg -i input.mp4 -psnr true output.mp4

在这个例子中,-psnr true 启用了 PSNR 计算。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 -psnr 参数,FFmpeg 将使用默认的 PSNR 计算设置。默认情况下,PSNR 计算通常是禁用的。

请注意,-psnr 参数的具体含义和用法可能会根据编码器的不同而有所不同。例如,-psnr 参数在 x264 编码器中用于启用或禁用 PSNR 计算,而在 x265 编码器中可能没有直接对应的参数。

总的来说,-psnr 参数允许你在 FFmpeg 中控制 PSNR 计算的使用,从而影响视频的编码效率和质量。

-vhook

在 FFmpeg 中,-vhook 参数是一个实验性的参数,用于设置视频钩子(Video Hook)的模式。视频钩子是一种视频处理技术,它允许你在视频编码或解码过程中插入自定义的代码或函数。

-vhook 参数后面通常跟着一个数字或字符串,表示所需的视频钩子模式。例如,如果你想启用视频钩子,你可以这样使用 -vhook 参数:

bash
ffmpeg -i input.mp4 -vhook experimental output.mp4

在这个例子中,-vhook experimental 启用了实验性的视频钩子模式。input.mp4 是输入文件,output.mp4 是输出文件。

请注意,-vhook 参数是实验性的,可能在未来的 FFmpeg 版本中被移除或更改。此外,-vhook 参数的具体含义和用法可能会根据编码器的不同而有所不同。

总的来说,-vhook 参数允许你在 FFmpeg 中控制视频钩子的使用,从而影响视频的编码或解码过程。

-map

在 FFmpeg 中,-map 参数用于选择输入文件中的哪些流(streams)应该被处理。每个输入文件可以包含多个流,比如视频、音频、字幕等。-map 参数允许你选择哪些流应该被包含在输出文件中。

-map 参数的基本语法如下:

bash
-map [-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]]
  • input_file_id 是输入文件的索引号,从 0 开始。
  • stream_specifier 是流的类型,可以是 v 表示视频流,a 表示音频流,s 表示字幕流,d 表示数据流,t 表示附件流。
  • sync_file_id 是同步文件的索引号,用于时间码同步。

例如,如果你有一个包含视频和音频的输入文件,并且你只想保留视频流,你可以这样使用 -map 参数:

bash
ffmpeg -i input.mp4 -map 0:v output.mp4

在这个例子中,-map 0:v 选择了输入文件的第一个(索引号为 0)视频流。input.mp4 是输入文件,output.mp4 是输出文件。

如果你有多个输入文件,并且想要将它们合并为一个输出文件,你可以这样使用 -map 参数:

bash
ffmpeg -i input1.mp4 -i input2.mp4 -map 0:v -map 1:a output.mp4

在这个例子中,-map 0:v 选择了第一个输入文件的视频流,-map 1:a 选择了第二个输入文件的音频流。input1.mp4input2.mp4 是输入文件,output.mp4 是输出文件。

-map 参数的灵活性使得你可以通过它来控制 FFmpeg 的输入和输出流。

-debug

在 FFmpeg 中,-debug 参数用于设置调试级别。调试级别决定了 FFmpeg 在运行过程中输出的详细信息。不同的调试级别会输出不同级别的调试信息,这对于开发者调试和理解 FFmpeg 的行为非常有用。

-debug 参数后面通常跟着一个数字或字符串,表示所需的调试级别。例如,如果你想设置调试级别为 32,你可以这样使用 -debug 参数:

bash
ffmpeg -debug 32 -i input.mp4 output.mp4

在这个例子中,-debug 32 设置了调试级别为 32。input.mp4 是输入文件,output.mp4 是输出文件。

FFmpeg 的调试级别可以是以下值:

  • 0quiet:不输出任何调试信息。
  • 1panic:只输出致命错误。
  • 2fatal:输出致命错误和其他严重错误。
  • 4error:输出所有错误信息。
  • 8warning:输出所有警告信息。
  • 16info:输出一般信息。
  • 32verbose:输出详细信息。
  • 64debug:输出调试信息。
  • 128trace:输出最详细的信息,包括内部函数调用和数据流。

你可以使用按位或(|)操作符来组合多个调试级别。例如,如果你想同时输出错误信息和警告信息,你可以这样使用 -debug 参数:

bash
ffmpeg -debug 12 -i input.mp4 output.mp4

在这个例子中,-debug 12 设置了调试级别为 12,它包含了错误信息(8)和警告信息(4)。

请注意,-debug 参数的具体含义和用法可能会根据 FFmpeg 的不同版本而有所不同。

总的来说,-debug 参数允许你在 FFmpeg 中控制调试信息的输出,从而帮助你理解 FFmpeg 的行为和问题。

-benchmark

在 FFmpeg 中,-benchmark 参数用于运行基准测试。基准测试是一种测试工具,它可以测量 FFmpeg 在特定硬件和软件配置下的性能。

-benchmark 参数后面通常跟着一个布尔值,true 表示启用基准测试,false 表示禁用基准测试。例如,如果你想启用基准测试,你可以这样使用 -benchmark 参数:

bash
ffmpeg -benchmark true -i input.mp4 output.mp4

在这个例子中,-benchmark true 启用了基准测试。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 -benchmark 参数,FFmpeg 将使用默认的基准测试设置。默认情况下,基准测试通常是禁用的。

基准测试的输出将包含一系列的性能指标,如编码时间、解码时间、CPU 使用率、内存使用情况等。这些信息可以帮助你评估 FFmpeg 在特定环境下的性能表现。

请注意,-benchmark 参数的具体含义和用法可能会根据 FFmpeg 的不同版本而有所不同。

总的来说,-benchmark 参数允许你在 FFmpeg 中运行基准测试,从而评估 FFmpeg 的性能。

-dump

在 FFmpeg 中,-dump 参数用于将媒体文件的各个组成部分(如视频、音频、字幕等)转储到文件中,以便于分析和调试。这些转储的文件通常包含了媒体文件的原始数据,可以用于检查媒体文件的结构和内容。

-dump 参数后面通常跟着一个布尔值,true 表示启用转储,false 表示禁用转储。例如,如果你想启用转储,你可以这样使用 -dump 参数:

bash
ffmpeg -dump true -i input.mp4

在这个例子中,-dump true 启用了转储。input.mp4 是输入文件。

FFmpeg 的转储功能会生成一系列的文件,每个文件包含了媒体文件的不同组成部分。例如,视频流可能会被转储到 input.mp4-0.video 文件中,音频流可能会被转储到 input.mp4-0.audio 文件中,等等。

请注意,-dump 参数的具体含义和用法可能会根据 FFmpeg 的不同版本而有所不同。此外,转储的文件可能会非常大,特别是对于高清视频和音频文件。

总的来说,-dump 参数允许你在 FFmpeg 中生成媒体文件的转储文件,以便于分析和调试。

-re

在 FFmpeg 中,-re 参数用于实时输入(Read at native frame rate)。这个参数告诉 FFmpeg 以其本机帧率读取输入文件,而不是以正常的帧率。这对于实时流媒体应用程序非常有用,因为它允许 FFmpeg 以接近原始帧率的速度处理输入数据。

-re 参数后面通常跟着一个布尔值,true 表示启用实时输入,false 表示禁用实时输入。例如,如果你想启用实时输入,你可以这样使用 -re 参数:

bash
ffmpeg -re true -i input.mp4 output.mp4

在这个例子中,-re true 启用了实时输入。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 -re 参数,FFmpeg 将使用默认的实时输入设置。默认情况下,实时输入通常是禁用的。

请注意,-re 参数的具体含义和用法可能会根据 FFmpeg 的不同版本而有所不同。

总的来说,-re 参数允许你在 FFmpeg 中控制实时输入的使用,从而影响视频的处理效率和质量。

-loop

在 FFmpeg 中,-loop 参数用于设置输入文件的循环次数。这个参数主要用于视频文件,它告诉 FFmpeg 在播放完视频后应该循环播放多少次。

-loop 参数后面通常跟着一个数字,表示循环的次数。例如,如果你想让视频循环播放 5 次,你可以这样使用 -loop 参数:

bash
ffmpeg -i input.mp4 -loop 5 output.mp4

在这个例子中,-loop 5 设置了视频循环播放 5 次。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 -loop 参数,FFmpeg 将使用默认的循环次数,通常是 1 次。

请注意,-loop 参数的具体含义和用法可能会根据 FFmpeg 的不同版本而有所不同。

总的来说,-loop 参数允许你在 FFmpeg 中控制视频文件的循环播放次数。

-threads

在 FFmpeg 中,-threads 参数用于设置用于视频编码和解码的线程数。线程数决定了 FFmpeg 在处理视频时可以同时使用的 CPU 核心数。

-threads 参数后面通常跟着一个数字,表示线程的数量。例如,如果你想设置线程数为 4,你可以这样使用 -threads 参数:

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

在这个例子中,-threads 4 设置了线程数为 4。input.mp4 是输入文件,output.mp4 是输出文件。

如果你不指定 -threads 参数,FFmpeg 将使用默认的线程数,通常是 CPU 核心数的一半。

请注意,-threads 参数的具体含义和用法可能会根据 FFmpeg 的不同版本而有所不同。

总的来说,-threads 参数允许你在 FFmpeg 中控制用于视频编码和解码的线程数,从而影响视频的处理效率和质量。