FFMPEG自学一 音视频解封装

news2024/11/16 4:42:13

一、音视频包含哪些数据

对于一个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.coloradmin.cn/o/350629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(二)随处可见的LED广告屏是怎么工作的呢?代码实现

书接上回,上一篇中我们聊到了LED点阵屏的工作原理和一些电气参数。本篇以第一篇为基础,对软件层面进行展开,同时也为下一篇接入GUI做铺垫。文章较第一篇有所增长,大概需要5~7分钟可以看完。【目标】能够随心所欲的显示我们想要的图…

OpenWrt之IPv6设置详解

文章目录前言网络结构1. WAN口设置2. LAN口设置3. NAT6配置4. 接口状态5. 网站测试6. 关于端口放行后话前言 最近电信终于肯下发v6的地址了, 得为路由器配置一下了, 之前一直是处于关闭的状态, 今天重新设置回去. 从此有了v4与v6双公网地址. 网络结构 光猫设置为桥接路由器设…

金三银四必看的软件测试面试题宝典,背完offer随便拿

怎么来设计测试方案根据测试需求(包括功能需求和非功能性需求),识别测试要点,识别测试环境要求,安排测试轮次,根据项目计划和开发计划做整体的测试安排。 被测试的特性:通过对需求规格说明书进行…

【软件测试】一位转型测试开发成功,工作两年测开岗的经验总结......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 小伍: 在…

win10电脑性能优化设置

win10电脑性能优化设置 目录win10电脑性能优化设置1.桌面图标显示2.wini2.1 “系统”2.1.1专注助手 关2.1.2 电源和睡眠 设置为从不2.1.3 存储 开2.2 网络和Internet2.3 个性化2.4 应用2.5 账户2.6 游戏2.7 隐私墨迹书写和键入个性化:关活动历史记录:全部…

怎么样用香港主机搭建游戏网站

香港是全球主要的互联网骨干节点,拥有质量较高的网络基础设施,在网络速度和稳定性方面表现良好。因此,使用香港主机搭建游戏网站可以使用户在游戏中的体验流畅且基本不会延迟情况。本文将向用户解释如何使用香港主机搭建游戏网站。在搭建游戏…

python gui构造openai api可视化页面

背景:最近chatgpt很火,前几天也想注册体验一下,一顿操作之后,卡在该国家不支持。最后发现自己的代理开在香港,改在漂亮国就行了。虽然有chatgpt可以用,但是小平是自己封装了一个,我不能输。正好…

基于Spring Boot开发的社区物业管理系统

文章目录项目介绍主要功能截图:登录车位收费管理物业收费管理投诉信息管理车位管理保修统计分析部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料…

使用Nginx解决跨域问题

目录 使用Nginx解决跨域问题 1、修改浏览器、客户端访问地址 2、在nginx.conf配置文件需配置server 3、在Nginx中配置客户端访问的接口(按照规则或通配),并设置被代理的服务器 4、在Nginx中统一配置客户端访问的头部信息(解决…

Power BI 常见数据导入错误(查询超时、找不到文件、数据类型错误、找不到表格)

本系列的文章: 《Power BI windows下载安装流程)》《Power BI 11个必学官方示例数据案例(附下载链接)》《Power BI 数据导入(SQL Server、MySQL、网页数据)》《Power BI 存储模式介绍(导入、Di…

C#将非模态窗体置顶显示方法

Winform 窗口有一个属性:TopMost,表示该窗体是否始终显示在此属性未设置为 true 的所有其他窗体之上;我的理解就是,如果一个 Winform 项目有多个窗体,其中有一个窗体的 TopMost 属性设为 true 了,而其他窗体…

Spring 中,有两个 id 相同的 bean,会报错吗

我们知道,spring容器里面的bean默认是单例的,所以id是唯一的。但是需要注意,同一类型的bean可以有不同的id,比如有id1->bean,也可以有id2->bean。 下面再来详细回答一下文章的问题。 首先,在同一个…

汽车DTC故障内码与标准故障码的解析与转换

目录 一、故障内码与标准故障码的解析 (1)故障内码的信息格式与解析 (2)故障内码中DTC状态的解析 (3)故障内码与标准故障码之间的对应关系 二、故障内码与标准故障码的转换代码 一、故障内码与标准故障…

数字化项目管理如何推动项目快速上市?【洞见6】

AIGC时代的到来,标志着互联网从信息化的轻工业时代正式进入了互联网数字化的重工业时代。随之迎来的是人工智能技术的广泛引用,如何在项目管理中应用也是一个挑战,因为的项目本身的特点就是变化、复杂。笔者在为了进行突破,开始不…

vue父子组件传值不能实时更新

最近做项目,遇到个大坑,这会爬出来了,写个总结,避免下次掉坑。 vue父子组件传值不能实时更新问题,父组件将值传给了子组件,但子组件显示的值还是原来的初始值,并没有实时更新,为什么…

基于TCP协议的文件传输系统

最简单的一对一的服务端网络端通信(socket) Socket(IP地址:端口号),例如:如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.1:23) socket可以理解成计算机提供给程序员的接…

R语言实现常用的5种分析方法(主成分+因子+多维标度+判别+聚类

R语言多元分析系列之一:主成分分析 主成分分析(principal components analysis, PCA)是一种分析、简化数据集的技术。它把原始数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为…

Android Application启动流程

详细流程分析 从 ActivityThread.java 的main方法开始看; public static void main(String[] args) {...ActivityThread thread new ActivityThread();thread.attach(systemfalse, startSeq);//1... }进入attach方法; if(!system){final IActivityMa…

flask配置https协议

感谢https://blog.csdn.net/qq_33934427/article/details/127456673,文中多有参考再实践一、要用https协议需要有ca证书,在windows10先下载windows版本openssl,地址如下https://share.weiyun.com/vfjVrMAb我是64位的选择下载完毕安装后配置环…

vmvare NAT模式设置

一、前言 这里为什么会写关于设置vmvare NAT模式的笔记呢,以前使用linux虚拟机都是使用桥接模式获取IP地址。最近出差仙林医院,发现使用无线网络,虚拟机桥接获取不到IP地址,所以使用NAT模式。 二、设置步骤 1.设置网络适配器 …