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