FFmpeg基础

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.40 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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 我将带领大家一起来学习WebRTC原理和编程知识,并动手搭建环境完成网页视频会话和文字聊天。具体内容包括: 一、Html与JavaScript小白入门二、WebRTC小白入门与流程原理分析三、网络打洞STUN和TURN四、信令服务器的原理与实战五、手撕WebRTC流程与代码六、亲自敲码踩坑搭建视频会话   音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。    

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值