当前位置:网站首页>基于X264的动态帧率与动态码率调整的实现
基于X264的动态帧率与动态码率调整的实现
2022-08-09 15:00:00 【北雨南萍】
1、动态帧率的实现
1.1 实现思路
依据动态调整因子(由网络状态,CPU状态、程序状态等组成),
计算出当前帧的可用码率,再在时间轴上动态调用x264的API实现对YUV数据帧的编码,
然后对编码帧打上非固定的动态时间戳,
从而实现了码率不变,帧率动态调整技术,
达到: 码率(清晰度)不变,流畅度变化的效果----即清晰度优先设置;
1.2 如何指定编码成关键帧
AVFrame* _v_frm;
_v_frm->key_frame = key_frame;
if (key_frame) {
_v_frm->pict_type = AV_PICTURE_TYPE_I;
} else {
_v_frm->pict_type = AV_PICTURE_TYPE_P;
}
1.3 在编码前实现帧率的动态调整
/* 随机丢掉编码前的帧 */
{
if (RANDOM(1,10) > 7) {
if (yuv_frm_unit->data != NULL) {
free(yuv_frm_unit->data);
}
if (yuv_frm_unit != NULL) {
free(yuv_frm_unit);
}
printf("Skip this frame yuv_pts=%lld\n", yuv_pts);
continue;
}
}
1.4 在编码后实现帧率的动态调整
边栏推荐
猜你喜欢
【QT】QLayout: Attempting to add QLayout “to ***“, which already has a layout的终极解决方法
Vim practical skills_3. Visual mode and command mode
【工具使用】Keil软件包——知识宝藏库
堆(heap)系列_0x02:堆的前世今生(WinDbg+Visual Studio汇编)
堆(heap)系列_0x04:堆的内部结构(_HEAP=_HEAP_SEGMENT+_HEAP_ENTRY)
堆(heap)系列_0x0A:3种方法一次性解决堆溢出问题
idea 用不了Ctrl+Shift+F快捷键全局搜索。
ASCII码表
Basic Concepts of Software Security
[Paper reading] LIME: Low-light Image Enhancement via Illumination Map Estimation (the most complete notes)
随机推荐
LeNet5 pytorch实现
【学习笔记】win10报0xc0000221错误无法开机
大唐杯5G练习题(一)
【力扣】75. 颜色分类
【Postgraduate Work Weekly】(The third week)
【力扣】617. 合并二叉树
Vim实用技巧_7.模式匹配和查找
Vitis部分实验记录
【工具使用】Modscan32软件使用详解
Monte Carlo simulation
【剑指 Offer】 37. 序列化二叉树
godot编写一个节点实时属性显示系统
解决端口号被占用的情况
matlab讲解与使用【持续更新中ing】
SVM Support Vector Machine - Application of MATLAB in Mathematical Modeling
libev库解剖(1)
【知识分享】知识链路-Modbus通信知识链路
类定义中class和className中间的修饰词的作用有关问题
Virtualbox 设置共享文件夹
Face recognition sample code analysis (1) - program parameter analysis