FFmpeg 命令行工具 - 帮助和码率、帧率和文件大小

这篇文章讲解 FFmpeg 命令行工具中如何查看帮助 , 以及关于码率、帧率和文件大小的概念和用法 。
FFmpeg 命令行工具 - 帮助和码率、帧率和文件大小文章插图
帮助基础帮助和完整帮助
ffmpeg -hffmpeg -h full针对特定主题的帮助 , 比如编码器
ffmpeg -bsfsffmpeg -codecsffmpeg -decodersffmpeg -encodersffmpeg -filtersffmpeg -formatsffmpeg -layoutsffmpeg -Lffmpeg -pix_fmtsffmpeg -protocolsffmpeg -sample_fmtsffmpeg -version针对特定条目的帮助 , 比如 FLV 解码器
ffmpeg -h decoder=flv码率、帧率和文件大小帧率帧率是每秒的帧数 , 决定流畅度 , 人眼至少需要帧率为 15 才能感知到连续动画 。
帧率通过 -r 来指定:
ffmpeg -i input.avi -r 30 output.mp4码率码率是每秒的比特数 , 决定质量 。

  • Average bit rate, ABR, 平均码率:每秒处理的平均比特数量 。
  • Constant bit rate, CBR, 固定码率:通常用于流媒体 , 而不是文件 。
  • Variable bit rate, VBR, 变化码率:每秒处理的比特数量是变化的 , 运动画面需要更多的比特数量 , 静止画面需要较少的比特数量 , 同样的文件大小 , VBR 比 CBR 的画面质量更好 , 但也需要更多运算时间和运算资源 。
码率通过 -b 来指定 ,-b:a 针对音频 ,-b:v 针对视频:
ffmpeg -i input.avi -r 30 output.mp4CBR 设置
-b、 -minrate 、 -maxrate 三项需要设置相同的值 ,-maxrate 还需要 -bufsize 来控制缓存大小:
ffmpeg -i in.avi -b 0.5M -minrate 0.5M -maxrate 0.5M -bufsize 1M out.mkv文件大小输出文件大小通过 -fs 来指定:
ffmpeg -i input.avi -fs 10MB output.mp4编码视频的大小计算:
video_size = video_bitrate * time_in_seconds / 8没有编码音频的大小计算:
audio_size = sampling_rate * bit_depth * channels * time_in_seconds / 8编码音频的大小计算:
audio_size = bitrate * time_in_seconds / 8For example to calculate the final size of 10-minutes video clip with the 1500 kbits/s video bit rate and 128 kbits/s audio bitrate, we can use the equations:
【FFmpeg 命令行工具 - 帮助和码率、帧率和文件大小】file_size = video_size + audio_sizefile_size = (video_bitrate + audio_bitrate) * time_in_seconds / 8file_size = (1500 kbit/s + 128 kbits/s) * 600 sfile_size = 1628 kbit/s * 600 sfile_size = 976800 kb = 976800000 b / 8 = 122100000 B / 1024 = 119238.28125 KBfile_size = 119238.28125 KB / 1024 = 116.443634033203125 MB ≈ 116.44 MB