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

相关推荐
colman wang6 分钟前
Java期末
java·开发语言
千里马-horse7 分钟前
AsyncContext
开发语言·前端·javascript·c++·napi·asynccontext
Coder_Boy_7 分钟前
基于MQ实现秒杀订单系统的异步化架构
java·开发语言·架构
勇往直前plus9 分钟前
Jackson 反序列化首字母大写字段映射失败的底层原因与解决方案
java·开发语言·前端
松涛和鸣9 分钟前
37、UDP网络编程入门
linux·服务器·前端·网络·udp·php
坐吃山猪10 分钟前
Python命令行工具Click
linux·开发语言·python
宠..11 分钟前
为单选按钮绑定事件
运维·服务器·开发语言·数据库·c++·qt·microsoft
Lueeee.14 分钟前
FFMPEG核心结构体
linux·ffmpeg
咋吃都不胖lyh16 分钟前
在任务管理器中筛选、查看进程
java·开发语言