当前位置: 首页 > news >正文

FFMPEG自学一 音视频解封装

一、音视频包含哪些数据

对于一个mp4文件我们可以通过音视频分析软件打开查看内部信息。

从两图可以看出mp4文件一般包含 音频流 视频流等。

对于上面的字段大致分析如下

Format

编码方式

AVC

现在大部分视频都是这种编码方式,即H264。

CodecId

编码器id

avc1

H264封装有2种格式:h264和avc1,avc1一般通过ffmpeg转码生成的视频 不带起始码0×00000001的

Duration

播放时间

可以在解码时获取显示

Bit rate

比特率

1929Kbps

指视频或音频文件在单位时间内使用的数据流量

Frame rate

帧率

25

一秒钟显示的图片数

Chroma Subsampling

采样排列方式

4:2:0

4:4:4表示完全取样。

4:2:2表示2:1的水平取样,垂直完全采样。

4:2:0表示2:1的水平取样,垂直2:1采样。

4:1:1表示4:1的水平取样,垂直完全采样

Channel

声道数

2channels

双声道(音频才有)

Sampling Rate

采样率

44.1KHZ

每秒钟采样的次数

二、音视频解封装流程

封装格式相关函数

avformat_alloc_context();负责申请一个AVFormatContext

结构的内存,并进行简单初始化

avformat_free_context();释放该结构里的所有东西以及该

结构本身

avformat_close_input();关闭解复用器。关闭后就不再需要

使用avformat_free_context 进行释放。

avformat_open_input();打开输入视频文件

avformat_find_stream_info():获取视频文件信息

av_read_frame(); 读取音视频包

avformat_seek_file(); 定位文件

av_seek_frame():定位文件

区分不同的码流

AVMEDIA_TYPE_VIDEO视频流

video_index = av_find_best_stream(ic,AVMEDIA_TYPE_VIDEO,-1,-1, NULL, 0);

AVMEDIA_TYPE_AUDIO音频流

audio_index = av_find_best_stream(ic,AVMEDIA_TYPE_AUDIO,-1,-1, NULL, 0)

三、解封装分析

avformat_open_input和avformat_find_stream_info分别用于打开一个流和分析流信息。

在初始信息不足的情况下(比如FLV和H264文件),

avformat_find_stream_info接口需要在内部调用

read_frame_internal接口读取流数据(音视频帧),然后再分

析后,设置核心数据结构AVFormatContext。

由于需要读取数据包,avformat_find_stream_info接口会带来

很大的延迟。

http://www.lryc.cn/news/9192.html

相关文章:

  • HoloLens 2 丨打包丨MRTK丨Unity丨新手教学
  • AcWing语法基础课笔记 第四章 C++中的数组
  • UTF小结
  • (考研湖科大教书匠计算机网络)第四章网络层-第六节3:开放最短路径优先OSPF的基本工作原理
  • 积水在线监测仪——积水点、易涝点水位监测设备
  • DCMM认证机构
  • Golang基于文件魔数判断文件类型
  • MySQL——索引视图练习题
  • 哈希表题目:矩阵置零
  • HTTP API自动化测试从手工到平台的演变
  • 【从零开始学C语言】知识总结一:C语言的基本知识汇总
  • CAD二次开发 添加按钮Ribbon
  • [RK3568 Android12] 添加自定义启动脚本
  • API 体系构建
  • RMPE: Regional Multi-Person Pose Estimation (AlphaPose)阅读笔记
  • 2月16日昆明面试经历部分考题
  • ARC140D One to One
  • 联合身份验证与Cognito
  • day18_常用API之String类丶Object类
  • OSG三维渲染引擎编程学习之五十五:“第五章:OSG场景渲染” 之 “5.13 一维纹理”
  • RTOS随笔之FreeRTOS启动与同步方法
  • 【AI/NLP】InstructGPT数据标注问题
  • 三次握手和四次挥手
  • Jmeter常用断言之响应断言详解
  • 【Python学习笔记】36.Python3 MySQL - mysql-connector 驱动(1)
  • 计算机SCI论文课题设计需要注意什么? - 易智编译EaseEditing
  • Quartz入门教程
  • TypeScript 学习之 function
  • 【云计算自学路线】
  • code01 v2黑屏、花屏、死机、断电重启、休眠死机的进来