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

相关推荐
子非鱼a11 分钟前
【WEB】WriteShell
php
troy1281 小时前
Python 基础语法(六):函数与模块、文件操作、异常处理
开发语言·python
lv__pf1 小时前
09-深入理解AQS之独占锁ReentrantLock源码分析【TL 并发 09】
java·开发语言
这是程序猿1 小时前
Java线程池深度剖析:源码原理、核心参数、任务调度与生产调优实战
java·开发语言·python
quantdash_cc2 小时前
从数据采集到策略消费,股票日内行情管道应该怎么设计?
开发语言·python·数据分析·量化交易·股票数据·quantdash
郝学胜-神的一滴2 小时前
C++20模板元编程 01:从零吃透模板核心底层逻辑
开发语言·c++·vscode·程序人生·开源
闲云野鹤在人间2 小时前
Docker入门|第3章 镜像详解
linux·网络·docker·容器·centos·云计算·php
sbjdhjd2 小时前
从兼容路由到任意方法调用:ThinkPHP 5.1.29 RCE 复现与调试复盘 | 06
经验分享·安全·网络安全·数据挖掘·开源·php·rce
可乐鸡翅yeah_2 小时前
HLS流媒体首屏起播慢深度优化,从分片、索引、播放器全链路调优
开发语言·javascript·ecmascript·m3u8·m3u8在线
luj_17682 小时前
生物体如何应对功能击穿?
c语言·开发语言·c++·经验分享·算法