当前位置: 首页 > news >正文

[ffmpeg] packet

API调用

常用API

AVPacket *av_packet_alloc(void); // 构建 packet 结构体
void av_packet_free(AVPacket **pkt); // 释放 packet 结构体
void av_packet_rescale_ts(AVPacket *pkt, AVRational tb_src, AVRational tb_dst); // pts,dts,duration 基于前后时间基进行转换

结构体介绍

typedef struct AVPacket {AVBufferRef *buf; // data 实际保存的地方,通过 ref 控制是否真的释放int64_t pts; // 渲染时间,基于 time_base 单位,必须 pts >= dtsint64_t dts; // 解码时间,基于 time_base 单位 uint8_t *data; // 指向 buf->dataint   size;int   stream_index; // 流索引,和 avformat 上下文中的 stream 对应int   flags;AVPacketSideData *side_data;int side_data_elems;int64_t duration; // 渲染时间,基于 time_base 单位。等于 next_pts - this_ptsint64_t pos; // 在流中的位置void *opaque; // 私有数据AVBufferRef *opaque_ref;AVRational time_base; // 时间基,视频为 1/fps 
} AVPacket;
struct AVBuffer {uint8_t *data; /**< data described by this buffer */size_t size; /**< size of data in bytes */atomic_uint refcount;void (*free)(void *opaque, uint8_t *data);void *opaque;int flags;int flags_internal;
};

其他

AVPacket *av_packet_alloc(void);
AVPacket *av_packet_clone(const AVPacket *src);
void av_packet_free(AVPacket **pkt);
void av_init_packet(AVPacket *pkt);
int av_new_packet(AVPacket *pkt, int size);
void av_shrink_packet(AVPacket *pkt, int size);
int av_grow_packet(AVPacket *pkt, int grow_by);
int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size);
uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, size_t size);
int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type, uint8_t *data, size_t size);
int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type, size_t size);
uint8_t* av_packet_get_side_data(const AVPacket *pkt, enum AVPacketSideDataType type, size_t *size);
const char *av_packet_side_data_name(enum AVPacketSideDataType type);
uint8_t *av_packet_pack_dictionary(AVDictionary *dict, size_t *size);
int av_packet_unpack_dictionary(const uint8_t *data, size_t size, AVDictionary **dict);
void av_packet_free_side_data(AVPacket *pkt);
int av_packet_ref(AVPacket *dst, const AVPacket *src);
void av_packet_unref(AVPacket *pkt);
void av_packet_move_ref(AVPacket *dst, AVPacket *src);
int av_packet_copy_props(AVPacket *dst, const AVPacket *src);
int av_packet_make_refcounted(AVPacket *pkt);
int av_packet_make_writable(AVPacket *pkt);
void av_packet_rescale_ts(AVPacket *pkt, AVRational tb_src, AVRational tb_dst);

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Vue路由vue-router的简单用法
  • 结构设计模式 -装饰器设计模式 - JAVA
  • 技术美术百人计划 | 《5.1.2 PBR-基于物理的相机》笔记
  • 百易云资产管理运营系统 ticket.edit.php SQL注入漏洞复现
  • 前端基于Rust实现的Wasm进行图片压缩的技术文档
  • 网络分段:您需要了解的一切
  • WEB攻防-JavaWweb项目JWT身份攻击组件安全访问控制
  • Java的cnum类型
  • Zabbix 6.4添加中文语言
  • 第一次见到要主动降薪的。。。
  • 【Vue系列五】—Vue学习历程的知识分享!
  • Qt上下文菜单
  • docker快速部署zabbix
  • 开源UNI-SOP云统一认证平台
  • 信息技术的革新与未来趋势
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [译]Python中的类属性与实例属性的区别
  • 【EOS】Cleos基础
  • Git初体验
  • IOS评论框不贴底(ios12新bug)
  • JS笔记四:作用域、变量(函数)提升
  • mongodb--安装和初步使用教程
  • Nodejs和JavaWeb协助开发
  • php ci框架整合银盛支付
  • Redash本地开发环境搭建
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • vuex 学习笔记 01
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 基于Android乐音识别(2)
  • 简单数学运算程序(不定期更新)
  • 数据可视化之 Sankey 桑基图的实现
  • 小而合理的前端理论:rscss和rsjs
  • elasticsearch-head插件安装
  • ​数据链路层——流量控制可靠传输机制 ​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $refs 、$nextTic、动态组件、name的使用
  • (6)添加vue-cookie
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (分类)KNN算法- 参数调优
  • (四)汇编语言——简单程序
  • (四)图像的%2线性拉伸
  • (一)插入排序
  • (一)为什么要选择C++
  • (转)iOS字体
  • (转)关于pipe()的详细解析
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .ai域名是什么后缀?
  • .NET 4.0中的泛型协变和反变
  • .NET Core 项目指定SDK版本