ffmpeg 常用命令

码率控制

帧率和比特率

//帧率控制
ffmpeg -i input -r 50 output
ffmpeg -i input -vf fps=fps=25 output 
ffmpeg -i input -r ntsc output

//比特率
//-b ;-b:v 音频帧率 -b:a 音频比特率
ffmpeg -i input -b 5M output
//视频会议 固定比特率
ffmpeg -i input -b 5M -minrate 5M -maxrate 5M -bufszie 10M output

文件大小 -fs

ffmpeg -i input -fs 10MB output//输出文件不大于10MB

文件大小计算

输出文件的大小是音频和视频流大小的总和
video_size=video_bitratetime_in_second/8(1B =8bits)未压缩的音频大小:audio_size=sample_ratebit_depthchanneltime_in_seconds/8压缩音频的大小:
audio_size=audio_bitrate*time_in_second/8

file_size=video_size+audio_size
file_size=(video_bitrate+audio_bitrate)*time_in_seconds/8

调整视频帧的大小

输出视频的宽度和高度可以在输出文件名之前设置-s选项。视频分辨率以wxh格式输入。

ffmpeg -i input_file -s 320x240 output_file

预定义的视频帧大小

ffmpeg -i input -s 640x480 output
ffmpeg -i input -s vga output

调整大小时的注意事项—奈奎斯特采样定理

视频通常被调整为比来源更小的分辨率,这被称为下采样,主要用于便携式设备,通过互联网流媒体等,重要的是要考虑,在较小的尺寸追踪,一些细节将会丢失,这一事实解释了奈奎斯特-Shannon采样定理。它的一般形式与任何信号有关,并告知为了完全重构采样信号,我们必须使用比信源频率高至少2倍的频率。
例如,800x600(SVGA)分辨率的视频包含2像素宽度的细节。当缩放到640x480(VGA)分辨率时,缩放比例为0.8,并且2像素缩放的结果为2像素

640/800=0.8
2 pixels *0.8 =1.6 =2pixels (四舍五入)

但缩放为160x120分辨率时,细节就丢失了:

160 pixels / 800 pixels = 0.2
2 pixels * 0.2 = 0.4 ≈ 0 pixels

这意味着在向下采样后,可见的只有输入大小至少3个像素的细节

专业的扩大滤波器

将视频调整为更大的帧大小比较少见,因为该功能几乎可以被所有的媒体播放器提供。但由此产生的图像有时并不清晰,特别是当源解析度非常小的时候。用于平滑放大的源的特殊滤波器时super2xsai滤波器:

ffmpeg -i input -vf super2xsai output //在不减少锐度的情况下,将帧大小放大为源的2倍。

高级缩放

视频过滤器——缩放

描述

语法

scale=width:height[:interl={1

iw/in_w

输入的宽度

ih/in_h

输入的高度

ow/out_w

输出的宽度

oh/out_h

输出的高度

a

纵横比 =iw/ih

ffmpeg -i input -s 320x240 output
ffmpeg -i input -vf scale=320:240 output
ffmpeg -i input -vf sacle=iw/2:ih/2 output
ffmpeg -i input -vf scale=iw*0.9:ih*0.9 output
ffmpeg -i input -vf scale=iw/PHI:ih/PHI output //PHI=1.6180339887....
ffmpeg -i input -vf scale=400:400/a output
ffmpeg -i input -vf scale=400*a:400 output