FFmpeg 解封装简单流程

打开文件,主要是探测协议类型,如果是网络文件则创建网络链接

avformat_open_input(&ifmt_ctx, in_filename, NULL, NULL);

获取流信息

avformat_find_stream_info(ifmt_ctx, NULL);

打印媒体信息

av_dump_format(ifmt_ctx, 0, in_filename, 0);

遍历查找视频/音频流索引

for (uint32_t i = 0; i < ifmt_ctx->nb_streams; i++)

fmt_ctx->streamsi->codecpar->codec_type == AVMEDIA_TYPE_VIDEO

fmt_ctx->streamsi->codecpar->codec_type == AVMEDIA_TYPE_AUDIO

AVPacket *pkt = av_packet_alloc();

读取数据包

while (1)

{

av_read_frame(ifmt_ctx, pkt);

if (pkt->stream_index == audioindex)

...

if (pkt->stream_index == videoindex)

...

av_packet_unref(pkt);

}

av_packet_free(&pkt);

avformat_close_input(&ifmt_ctx);

相关推荐
影寂ldy几秒前
C# 五大加密算法全套实战(AES/DES对称、RSA非对称、MD5/SHA256哈希)
开发语言·c#·哈希算法
罗超驿28 分钟前
6.Java LinkedList深度解析:从链表原理到源码实践
java·开发语言·链表
2501_9481069131 分钟前
计算机毕业设计之jsp物业管理系统
java·大数据·开发语言·汽车·课程设计
逝水无殇42 分钟前
C# 反射详解
开发语言·后端·c#
xlxxy_1 小时前
sap获取批次特性报表
java·linux·开发语言·前端·数据库·abap·mm
北冥you鱼1 小时前
Go语言常用包使用指南:从标准库到第三方利器
开发语言·microsoft·golang
俺不中嘞1 小时前
python常用函数
开发语言·python
欢喜躲在眉梢里1 小时前
用飞算Java做了一套新能源充电运营管理系统:把站点、设备、订单拆成可运营的微服务
java·开发语言·微服务·ai编程·技术分享·java开发·飞算javaai炫技赛
এ慕ོ冬℘゜2 小时前
深入理解 JavaScript 事件对象:从 target 到 preventDefault 的实战指南
开发语言·前端·javascript
学逆向的2 小时前
汇编——修改EIP的值
开发语言·汇编·网络安全