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);

相关推荐
2301_765703141 分钟前
C++中的工厂模式实战
开发语言·c++·算法
电商API&Tina6 分钟前
电商数据采集 API 接口 全维度解析(技术 + 商业 + 合规)
java·大数据·开发语言·数据库·人工智能·json
小白学大数据10 分钟前
实测数据:多进程、多线程、异步协程爬虫速度对比
开发语言·爬虫·python·php
sonrisa_28 分钟前
Python同一类不同方法中变量值的传递
开发语言·windows·python
星火开发设计40 分钟前
C++ 输入输出流:cin 与 cout 的基础用法
java·开发语言·c++·学习·算法·编程·知识
曹牧1 小时前
Java:强类型转换
开发语言·python
wuguan_1 小时前
C#之线程
开发语言·c#
LXS_3571 小时前
STL - 函数对象
开发语言·c++·算法
木千1 小时前
Qt5.15.2安装MSVC2019编译器
开发语言·qt
仟濹1 小时前
【Java加强】1 异常 | 打卡day1
java·开发语言·python