FFmpegAndroid开发经验谈FFmpeg

每天一点FFmpeg(1)

2017-07-12  本文已影响587人  maimingliang

FFmpeg命令系列

在Mac下编译 FFmpeg ,并在Android中使用
每天一点FFmpeg(1)
每天一点FFmpeg(2)
每天一点FFmpeg(3)
每天一点FFmpeg(4)
每天一点FFmpeg(5)
每天一点FFmpeg(6)

帧率,码率,文件大小的概念

帧率

单位时间内刷新图片的帧数(视频文件每秒的播放的帧数)。单位时间内刷新的图片越多,视频越流畅。
根据视觉停留原理,肉眼看到连续的画面每一秒的帧数至少15帧。

码率(比特率)

数据传输时单位时间传送的字节数,单位时间码率越高,精度越高,越接近源文件的大小。如何用最低的码率达到最少的失真,一般我们用的单位是kbps即千位每秒

文件大小

帧率和码率是视频文件最重要的基本特征,它们的设置决定的视频的质量。
计算文件的大小:(视频码率+音频码率)* 时长 / 8 。单位K

使用FFmpeg改变视频文件的帧率,码率,文件大小

改变帧率的命令:

ffmpeg -y -i input -r fps output

参数说明:
-y:覆盖输出文件,即输入文件input已经存在,不经提示就覆盖掉
-i:即输入视频文件(视频文件的全路径)
-r:帧数

源视频的详细信息:

aa.png

将源视频的帧率改为 24帧/秒

ffmpeg -y -i demo-r.mp4 -r 24 demo-r-24.mp4

执行结果

002.png

帧率的预定义值

001

例如设置帧率24fps,下面三种是同样的效果:
ffmpeg -y -i demo-r.mp4 -r 24 demo-r-24.mp4
ffmpeg -y -i demo-r.mp4 -r 24/1 demo-r-24.mp4
ffmpeg -y -i demo-r.mp4 -r flim demo-r-24.mp4

码率

设置码率的选项是-b
码率分为视频的码率 -b:v,音频的码率-b:a,单位kbps,

设置视频码率1500,音频码率48
ffmpeg -y -i demo-b.mp4 -b:v 1500K -b:a 48K demo-bv1500-ba-48.mp4

执行结果:

003.png

不同分辨率下视频推荐的码率

| 分辨率 | 码率 |
| -------- |: -----: |
| 360p | 400 |
| 480p | 600 |
| 540p | 700 |
| 720p | 1000 |
| 1080p | 1500 |

不同acc profile下音频推荐的码率

| profile | 单声道 | 双声道 |
| -------- |: -----: |: -----: |
| PROFILE_AAC_LOW | 48 | 96 |
| PROFILE_AAC_HE | 32 | 64 |
| PROFILE_AAC_HE_V2 |-- | 48 |

文件大小

控制文件输出大小的参数选项是-fs(file size)

例如控制输出文件大小为500K,单位可 KMG
ffmpeg -y -i demo.mp4 -fs 500K demo-fs-500K.mp4

源视频大小

004.png

控制输出文件大小

005.png

综合使用

例如,输出帧率为 15fps,视频码率1500kbps,音频码率48kbps。
ffmpeg -y -i demo.mp4 -r 15 -b:v 1500K -b:a 48K res.mp4

END.

上一篇下一篇

猜你喜欢

热点阅读