ffmpeg--转码参数调整

 

H.264有四种画质级别,分别是baseline, extended, main, high:

  • 1、Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC;
  • 2、Extended profile:进阶画质。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;(用的少)
  • 3、Main profile:主流画质。提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced), 也支持CAVLC 和CABAC 的支持;
  • 4、High profile:高级画质。在main Profile 的基础上增加了8x8内部预测、自定义量化、 无损视频编码和更多的YUV 格式;

  H.264 Baseline profile、Extended profile和Main profile都是针对8位样本数据、4:2:0格式(YUV)的视频序列。在相同配置情况下,High profile(HP)可以比Main profile(MP)降低10%的码率。 根据应用领域的不同,Baseline profile多应用于实时通信领域,Main profile多应用于流媒体领域,High profile则多应用于广电和存储领域。

一些解释:

1     I-帧:也成为关键帧,I-帧完全自我使用的,并且不使用任何其他帧的信息。它在三种帧中占最大的比例,并且具有最高的质量,但是压缩效率是最低的。
    P -帧:P -帧是所谓的“预示”帧。当创建了一个P-帧时,编码器可以向后查看I-帧或者P-帧中冗余的图片信息。P-帧比I-帧效率高,但是没有B-帧的效率高。
    B-帧:B-帧是双向预测帧,这意味着当我们创建B-帧,编码器可以同时向前和向后查找冗余的图片信息。这使得B-帧在三种帧中具备最佳的效率。注意,B-帧在使用Baseline方式生产视频的时候是不可用的。

2     虽然结果是取决于源文件质量的,但通常来说CABAC被认为比CAVLC效率高5%-15%。 这意味着,CABAC应该在码率低5-15%,的情况下,提供同等的,或者更高的视频质量。

3     至于Baseline@L x.x、Main@L x.x、High@L x.x形式则是在不同级别下的码流级别,数值越大码流就越大,更耗费资源。所以就码流而言High@L3.0<High@L4.0<High@L5.1。

4  压缩率来说就是BP>HP>MP, 比例大概是100的原始数据, 压缩后BP=15,HP=45,MP=50;在相同配置情况下,High profile(HP)可以比Main profile(MP)节省10%的码流量,比MPEG-2 MP节省60%的码流量,具有更好的编码性能。根据应用领域的不同,Baseline profile多应用于实时通信领域,Main profile多应用于流媒体领域,High profile则多应用于广电和存储领域。

下图清楚的给出不同的profile&level的性能区别。

profile 主要参数:

Level 主要参数:

 

从压缩比例来说,baseline< main < high ,对于带宽比较局限的在线视频,可能会选择high,但有些时候,做个小视频,希望所有的设备基本都能解码(有些低端设备或早期的设备只能解码baseline),那就牺牲文件大小吧,用baseline。自己取舍吧!

苹果的设备对不同profile的支持。

preset

 

·  --bframes <最多连续放多少B帧

B帧是压缩程度最高的帧, 放的越多愈能降低码率! 

比如设置--bframes 16 (最大值16)就等于一组最多可以连续放入16个.

*注意: 此参数在不同用途的视频的分歧很大.

**注意: 此参数会严重影响网络视频的观看效果.

B帧本身需要读取参考前面的帧的信息, 调的越高, 一个GOP中就有更大可能被放入更多B帧从而达到压缩效果. 

大量B帧能达到压缩效果, 加快网络缓冲, 但上传用视频占用太多CPU会导致网络播放器从轻微到严重的磕磕绊绊断断续续的播放状态, 这种情况不要设高!

·  --b-adapt <应该放B帧还是P帧>

x264用来决定放P帧还是B帧更好, 一共3个选项:

0 全部设B帧 (可能会造成播放器解码困难, 不推荐)

1 加速算法 (bframes开的越大, 速度愈快, 但效果不如2)

2 完整算法 (bframes开的越大, 速度愈慢, 但压缩率更好)

推荐2, 但码率允许的情况下也推荐1

·  --direct <根据空间还是时间来判断物件移动>

直接 --direct auto 自动判断 (有的参数确实没啥好说的)

·  --me <位移预测方式>

速度从低到高有:

dia菱形(快, 效果差), 

hex六边形(快, 效果一般, 纯单向移动推荐), 

umh可变六边形(适中,效果好, 推荐), 

esa全向(慢, 效果好点儿)

tesa超全向(比上一个慢点儿, 效果好一丢丢).

大多情况推荐 --me umh 

模拟钢琴, midi轨道演示类的视频大多都是单向移动, 所以可以选 --me hex, 但文件码率会增大一点(1080p, 60帧下约100kbps).

tesa只比esa慢一小点. 除非码率只差一点(10kbps)就合格了再使用, 当然更简单粗暴不拖时间的方式还是调 --vf resize 里的 sar~

--merange <位移预测范围大小>

多大都可以. 在最极端的 --preset placebo 参数中这个值也只是24. 

普通情况就设24即可, 毕竟现在电脑的配置不是几年前了.

模拟钢琴类的视频由于几乎所有的物件都往一个方向移动, 不会很大的拖慢判断, 所以推荐32.

--partitions <宏块能分成多少份>

用来精确的还原线条. --presetplacebo下的是 --partitions all 所以视频的宽度和高度都会被分成16块, 见图(数一下图中横向和纵向的块的数量就明白了)

推荐:

高清片源+等于/高于1280*720: --partitions all

低清片源/低于1280*720情况下: --partitions b8x8,p8x8,i8x8,i4x4 (IPB帧被分成8x8的小块, I帧还可以被分成4x4的小块.)

片源非常不清晰时: --partitions b4x4,p4x4,i4x4.

--ref <能参考多少帧> 最大值16

这个参数最终会以命令的形式告诉播放器每一个B帧和P帧能用多少个前面的帧来获取参考信息. 能参考更多帧, 标志着自身可以储存更少信息, 增强压缩效果. 

*注意: 此参数会严重影响网络视频的观看效果.

**注意: 此参数在不同用途的视频的分歧很大.

无变化,不用参考,设为1左右。

变化不大,容易参考,适合开大,设为10以上。

变化太大,难以参考,适合缩小,设为5以下。

·  --trellis <要帮忙吗>

基于拉普拉斯算子(什么鬼)通过分格量化将编码数据微调的参数. 好吧, 拉普拉斯算子的优点是能发现并增强微小的细节, 我就知道这么多~

设定的值会影响trellis在计算部分的参与程度. 一般是越多越好.

0: 关闭.

1: 仅编码后期量化计算.

2: 编码后期量化, 运动精度, 分割宏块等计算. 

所有情况推荐 --trellis 2

·  --rc-lookahead <扫描多少帧>

扫描往后的帧并把变化数据交给量化工具. 

建议设置为视频原帧数的三倍, 个位数除以2, 小数去尾.

*对于分辨率很低(240p,360p, 480p等)可以考虑设为视频源帧数的5倍

(极限值为 250)

并降低qcomp来保证最大的扫描距离和量化压缩强度哦(qcomp后面会讲到, 现在可以无视)

--subme <设置亚像素估计的复杂度> 

值设在0-11之间, 设的越大提升越强.

推荐最高的值: 11 (有的x264版本不支持, 这种情况下用10)

默认:7

可使用的值如下:
0 —— fullpel only
1 —— QPel SAD 1 iteration
2 —— QPel SATD 2 iterations
3 —— HPel on MB then QPel
4 —— Always QPel
5 —— Multi QPel + bi-directional motion estimation
6 —— RD on I/P frames
7 —— RD on all frames
8 —— RD refinement on I/P frames
9 —— RD refinement on all frames
10 —— QP-RD (requires –trellis=2, –aq-mode > 0)

preset跟profile,level是否冲突?

就个人理解,profile,是特性限定,level是数量限定,preset是具体执行的步骤限定,在一起应该不冲突。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: mobile-ffmpeg-full 是一个基于 FFmpeg 的移动端多媒体处理库。FFmpeg 是一个开源的多媒体处理工具,可以对音频、视频、字幕等多种媒体文件进行编解码和转换。 mobile-ffmpeg-full 是移动端的一个扩展,为移动设备提供了对 FFmpeg 的广泛支持。它可以在 Android 和 iOS 平台上使用,并且提供了丰富的功能,包括音频转码、视频剪辑、添加水印、合并音视频、获取视频缩略图等。 使用 mobile-ffmpeg-full 可以方便地对移动设备上的多媒体文件进行处理。它提供了简洁的 API 接口,使得开发者能够轻松地调用各种功能。同时,它还提供了高效的处理能力,能够在移动设备上快速地处理大量的媒体文件。 移动设备的媒体处理需求越来越多样化,mobile-ffmpeg-full 提供了一个强大而灵活的解决方案。它不仅可以满足常见的媒体处理需求,还支持自定义的编码和解码参数,使得开发者能够根据具体需求进行定制。 总而言之,mobile-ffmpeg-full 是一个功能强大、易于使用的移动端多媒体处理库,它为移动设备上的媒体处理提供了丰富的功能和高效的性能。无论是开发媒体编辑应用,还是进行媒体文件处理,在移动设备上使用 mobile-ffmpeg-full 都是一个不错的选择。 ### 回答2: mobile-ffmpeg-full是一款为移动设备开发的功能强大的FFmpeg库。FFmpeg是一个开源的音频和视频处理工具,可以处理各种格式的音视频文件。 mobile-ffmpeg-full提供了完整的FFmpeg功能,可以在移动设备上进行音视频的转码、剪辑、解码等操作。它支持多种音频和视频格式,包括常见的MP3、MP4、AVI等,也支持高级的音频编码格式和视频编码格式。 使用mobile-ffmpeg-full,我们可以在移动设备上灵活地处理音视频文件。比如,我们可以将一个音频文件转为另一种格式,或者将一个视频文件裁剪成指定时长。我们还可以添加水印、调整音量、变速播放等。 mobile-ffmpeg-full易于集成到移动应用程序中。它提供了简洁的API接口,开发者可以轻松使用它的功能。同时,它也提供了详细的文档和示例代码,帮助开发者快速上手并解决问题。 总的来说,mobile-ffmpeg-full是一种非常实用的工具,可以帮助开发者在移动设备上进行音视频处理。它具有强大的功能和易用的特点,让我们可以更加灵活地处理音视频文件,满足不同场景下的需求。无论是开发媒体应用还是进行多媒体处理,mobile-ffmpeg-full都是一个很好的选择。 ### 回答3: mobile-ffmpeg-full 是一款针对移动设备开发的完整版 FFmpeg 库。FFmpeg 是一个开源的跨平台音视频处理工具集,拥有广泛的应用领域。mobile-ffmpeg-full 提供了完整的 FFmpeg 功能,使移动设备具备强大的音视频处理能力。 mobile-ffmpeg-full 的特点包括以下几点。首先,它支持多种音视频格式的解码和编码,可以处理包括 MP4、MKV、MOV、FLV、MP3、AAC 等常见的音视频格式。其次,它提供了丰富的音视频处理功能,包括剪辑、拼接、转码、压缩、添加音视频轨道、提取音频等,满足了开发者对音视频处理的各种需求。此外,mobile-ffmpeg-full 还支持图像处理功能,如截图、添加水印等。 这个库的设计目标是在移动设备上提供高效的音视频处理能力。它采用了精简的架构和优化的算法,以提高音视频处理的性能和效率。同时,mobile-ffmpeg-full 支持多线程工作模式,可以充分利用多核处理器的优势,实现更快的处理速度。 开发者可以通过添加 mobile-ffmpeg-full 库到自己的移动应用程序中,实现各种复杂的音视频处理需求。无论是开发视频编辑软件、媒体播放器还是音视频社交应用,mobile-ffmpeg-full 都可以提供强大的支持。此外,移动设备上的 FFmpeg 库还可以应用于音频视频剪辑、分割、转码、加速、拼接等方面的需求,满足用户在移动端的各种音视频处理需求。 总之,mobile-ffmpeg-full 是一款强大而且灵活的移动设备音视频处理库,为移动应用开发者提供了完整的 FFmpeg 功能和高效的处理能力,可以实现各种音视频处理需求。无论是开发专业的视频编辑软件,还是实现简单的音视频处理功能,mobile-ffmpeg-full 都是一个理想的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值