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->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO

fmt_ctx->streams[i]->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);

相关推荐
AI科技星几秒前
张祥前统一场论中两个电荷定义的统一性解析
开发语言·线性代数·算法·数学建模·平面
代码地平线1 分钟前
C语言实现堆与堆排序详解:从零手写到TopK算法及时间复杂度证明
c语言·开发语言·算法
西西学代码2 分钟前
查找设备页面(amap_map)
开发语言·前端·javascript
迦南的迦 亚索的索20 分钟前
PYTHON_DAY21_数据分析
开发语言·python·数据分析
枫叶丹424 分钟前
【HarmonyOS 6.0】ArkWeb 手势获焦模式详解:告别点击获焦,迎接长按触发
开发语言·华为·harmonyos
ID_1800790547325 分钟前
如何使用 Python 调用小红书笔记评论 API 时进行并发控制?
开发语言·笔记·python
zopple31 分钟前
Laravel 7.x 核心特性全解析
php·laravel
lsx20240631 分钟前
PHP Error处理指南
开发语言
沐雪轻挽萤33 分钟前
4. C++17新特性-内联变量 (Inline Variables)
开发语言·c++
Chase_______35 分钟前
【JAVA基础指南(四)】快速掌握类和对象 基础篇
android·java·开发语言