关于媒体编解码以及封装那点事

音视频编解码常用知识点 目录 视频播放器原理 流媒体协议 封装格式(容器) 编解码 转码 帧(Frame) 帧率(Frame rate) 分辨率 比特率(码率) 采样率 采样位数 声道数 有损压缩和无损压缩 帧内压缩和帧间压缩 对称编码和不对称编码 音频编码 声音数字化三要素 音频编码标准 视频编码 色彩空间 RGB色彩空间 YUV色彩空间 压缩原理 熵与冗余 帧内编码 ... 阅读详情

前言

从事音视频相关研究的工程师,免不了涉及编码,解码,复用(封装),解复用(解封装)等概念,还可能涉及到播放器,编码器等程序或硬件。现在火爆的互联网直播,小视频还有各种P2P视频通话等,其基本原理都十分类似。

播放器媒体流图

播放器

从上图可以看出,通用的播放器(如FFmpeg中的ffplay)设计都遵循这样的媒体流过程。
Source代表媒体源,有可能是来自本地设备(U盘,移动硬盘,文件系统),也有可能是来自于网络(通过
HTTP,HLS,RTSP,UDP等);
Demux是解复用的意思,读到文件后,首先需要进行解复用(demux,或者叫解封装),将音频,视频,字幕等分离出来;
Buffer是缓存,为了匹配解封装和解码之间的速度,需要有一个内存缓存区来适应动态码率;
Decoder是解码器,即音频解码器和视频解码器,将压缩后的单元流解码成原始流;
A/V Out是音视频输出的意思,音频通过PCM Player进行D/A转换输出到喇叭/耳机等外设,视频则通过屏幕一帧一帧显示画面;这里需要注意音频播放和视频显示之间需要做同步,保证画面和声音的一致性。同步的基准是PTS,即显示时间戳,音视频同步我们在另外的文章里再介绍。

媒体封装过程

编码模型

上图表示音视频原始数据如何组装成媒体文件/流,再传到播放器的。参考箭头从右往左看,原始的音视频数据,首先要经过编码器进行压缩,然后通过封装容器把音视频数据打包成媒体文件/流。接下来,通过本地文件或者网络文件的传输方式,将其发送到解码终端,再送入播放器进行解码等逆向过程。这里一定要理解图上
TS,rtsp,h264,Source,Player这些常见概念所处的位置。

FFmpeg的主要功能

实际上,在开源的音视频项目里,FFmpeg更侧重于编解码,它支持各种各样的编解码格式,还支持各种形式的转码,可以说编解码技术是FFmpeg的核心技术所在。

鸿蒙开发进阶(HarmonyOS)媒体数据封装 开发者可以调用本模块的Native API接口,完成音视频封装,即将音频、视频等编码后的媒体数据,按一定的格式存储到文件里。 阅读详情

相关推荐

OpenMax多媒体引擎

摘自《Android系统级深入开发—移植与调试》 18.1  OpenMax系统结构和移植内容 OpenMax是一个多媒体应用程序的框架标准。其中,OpenMax IL(集成层)技术规格定义了媒体组件接口,以便在嵌入式器件的流媒体框架中快速集成加速编解码器。 在Android中,OpenMax IL层,通常可以用于多媒体引擎的插件,Android的多媒体引擎OpenCore和StageFri

BonderWu的专栏 1万+

【音视频原理】音视频 “ 采样 - 编码 - 封装 过程 “ 和 “ 解封装 - 解码 - 播放 过程 “ 分析 ( 视频采集处理流程 | 音频采集处理流程 | 音视频文件解封装播放流程 )

一、视频采集处理流程 二、音频采集处理流程 三、音视频文件解封装播放流程

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 4273

编解码格式/封装格式/mediainfo工具使用

总是不期有人问我一些音视频问题,在这里就科普一下音视频的基本知识吧。 首先要知道,无论是音频、视频还是音视频。都是分编码/解码格式和封装格式的。目前Android设备上常用的音频编/解码格式有mp3、avc等,视频编解码格式有h264、h265、v8等,音频文件封装格式有 ,视频文件(带音频)封装格式有,。 我们可以通过mediainfo工具查看音视频文件的详细信息。如果你电脑没有安装此工具,可以通过下面命令安装即可: //fedora sudo yum install mediainfo //u

海棠花的博客 2835

流媒体解码及H.264编码推流

简介相关理论程序流程Opencv解析视频流像素格式转换FFmpeg进行H.264编码FFmpeg进行格式封装和推流这里我们使用了FFmpge的sdk和Opencv的sdk...

欢迎关注公众号:【码农突围】,回复9999,可以获取一份LeetCode刷题笔记 2289

C#与视频硬件开发:编解码与流媒体技术的深度探索

C#与视频硬件开发的结合使得我们能够在桌面或服务器端开发高效的视频处理和流媒体应用。通过理解视频编解码的基础,掌握硬件加速技术,并利用流媒体协议进行实时视频传输,开发者能够创建出高效、稳定的视频处理系统。随着硬件技术的不断发展与C#生态系统的日益完善,视频开发领域的技术将会不断拓展,为各类视频应用提供更强大的支持。从视频编解码到流媒体传输,C#为开发者提供了丰富的工具和接口,帮助我们在视频技术的海洋中游刃有余。这篇文章为希望深入了解视频硬件开发的C#开发者提供了理论与实践相结合的全面视角。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 917

FFmpeg多媒体编解码实战测试

在当今数字化时代,音视频处理已成为日常需求的一部分。FFmpeg作为一款开放源代码的多媒体框架,已然成为处理音视频数据的事实标准。本章将深入浅出地介绍FFmpeg的功能和它的广泛应用。H264,又称作MPEG-4 AVC(Advanced Video Coding),是一种高效视频压缩标准,被广泛应用于各种视频传输和存储领域。它由ISO/IEC Moving Picture Experts Group(MPEG)和ITU-T Video Coding Experts Group(VCEG)共同制定。

weixin_30336531的博客 665

音视频开发(2)—— 音视频编解码与封装

封装格式是一种文件结构,用于将不同类型的媒体流(如视频、音频、字幕等)组合在一起,形成一个完整的多媒体文件。封装格式通常包括文件头、媒体流、索引和元数据等信息。

m0_46181435的博客 1121

多媒体编解码与传输格式转换的实践指南

随着数字视频技术的发展,MPEG4和H264已成为广泛应用于多媒体内容分发的两大视频编码标准。本章将为您揭开这两个标准的神秘面纱,从它们的起源、原理、应用场景以及优缺点等方面进行深入探讨。封装格式是一种将编码后的数据打包的技术,它规定了如何将视频、音频和可能的字幕数据组织成一个数据流,以便于存储和传输。这些格式对多媒体文件的内容、结构以及信息的检索方式进行了定义,使得播放设备能够识别并正确地展示相应的多媒体内容。

weixin_36289742的博客 948

音视频编解码原理(一) 封装格式和编码方式简介

一、封装格式 要了解音视频编解码原理,首先需要了解什么是封装格式? 所谓封装格式,就是将已经编码压缩好的视频轨和音频轨按照一定的格式封装到一个文件中,一般情况下,不同的封装格式对应不同文件后缀,例如: 视频文件格式 视频封装格式 .avi AVI(Audio Video Interleaved) .mp4 .3gp .mpeg .mpg MPEG(Moving Picture Experts Group) .flv Flash Video .rm...

程序课代表的博客 2785

多媒体技术 实验作业6 LZ77编码与解码.zip

包含实验要求、项目工程、可执行文件、部分实验结果输出示例 C/C++ 编程实现对文本文件做LZ77编码,编码后的文件以二进制文件的形式存储; C/C++ 编程实现对LZ77压缩后的二进制文件解码,恢复出原始的文本文件并保存; 分别统计出编码和解码所需要的时间(单位秒),并打印出来。

ABAP代码检查(Code Review)

1、SLIN 扩展程序检查 也可通过(SE38工具栏->检查-扩展程序检查) 进入 2、ATC 检查 通过<SE38菜单栏-检查-ABAP测试主控室> 或事物代码SCI, 支持自定义检查变式 SCI可以配置检查变式满足特殊需求,配置对象集用于批量检查 3、通过ABAP测试主控室实现统一管理,定期检查作业和监控功能(事务代码ATC) 参考 SLIN...

u012232542的博客 6063

视频编码解码基本知识

最近在做摄像头视频的数据处理,得到了网络相机的.h264格式的数据,需要做解码处理,由于对视频的编码解码原理不太了解,因此查找资料总结一下

ZONGXP的博客 1万+

MT6771 Android13 背光曲线调试与光感数据校准实战

本文详细介绍了MT6771平台在Android 13系统上进行背光曲线调试与光感数据校准的实战经验。针对高亮度环境下背光误调节问题,深入分析了光感数据上报机制,并提供了驱动层配置修改、背光曲线优化及常见问题解决方案,帮助开发者快速定位并解决类似问题。

moon9的博客 287

【开源鸿蒙-AVCodec Kit】音视频编解码封装解封装部件介绍,转自开源鸿蒙官媒OpenAtom OpenHarmony

欢迎加入开源鸿蒙音视频格式解码解封装共建,我们在开源鸿蒙开发者视频号进行了音视频解码解封装的共建赋能,欢迎开发者跟随直播或查看回放来了解相关知识,一起参与开源鸿蒙生态建设,共建更开放、更智能的未来世界。在视频解码过程,AVCodec通过回调函数提供AVBuffer给应用,由应用将要解码的sample数据写入AVBuffer,在AVCodec中数据不再需要从内存拷入硬件解码器,而是直接送入解码器解码,实现系统内数据零拷贝。在文件封装环节,应用将AVBuffer送入Codec对应的接口,执行数据封装。

Industio_优快云的博客 1432

Cursor插件安装CodeX保姆级教程:从登录到调整面板布局,一步不落

本文提供Cursor编辑器安装CodeX插件的详细教程,涵盖从登录到调整面板布局的全流程。通过优化界面布局和配置参数,帮助开发者提升编码效率,特别适合需要智能代码补全的编程场景。

weixin_42648844的博客 4750

YOLOv11改进 | 引入SFSConv空间频率选择卷积(含SFSC3k2二次创新),空间频率特征协同作用,检测性能全面提升

本文提出在YOLOv11中引入SFSConv空间频率选择卷积模块,通过显式分离和动态融合空间域与频率域特征,解决传统卷积对多尺度目标检测的局限性。SFSConv包含空间频率分离、动态权重融合和协同特征重建三个核心机制,并进一步创新提出SFSC3k2结构,通过双路频率分支增强特征协同作用。该改进显著提升了YOLOv11在遥感、医学等多尺度复杂场景下的检测性能,实验显示在微小目标检测任务中mAP提升5%-10%。代码实现展示了SFSConv模块的核心逻辑及其在PyTorch中的高效实现。

走向CTO的路上... 767

FFMPEG数据封装格式、多媒体传输协议、音视频编解码器

FFMPEG堪称自由软件中最完备的一套多媒体支持库,它几乎实现了所有当下常见的数据封装格式、多媒体传输协议以及音视频编解码器,提供了录制、转换以及流化音视频的完整解决方案。

专注企业级视频应用,企业视频直播、MR虚拟直播、教育培训连麦直播 1244

TypeError: ‘<=‘not supported between instances of ‘float’and ‘str‘解决方案

本文主要介绍了TypeError: '

weixin_43178406的博客 28万+

多媒体编解码

多媒体编解码基础知识_多媒体编解码技术-优快云博客封装格式(容器):MPG,VOB,MP4,3GP,ASF,RM,MOV,MKV,OGG,OGM,AVI,NSV,WAV。把编码压缩好的视频轨和音频轨按照一定的格式放入一个文件中。一文读懂视频编解码原理_视频解码靠什么-优快云博客1920*1080分辨率,24位色,每秒30帧的视频:1920*1080*24bit*30/s=1658880bit/s=1620Kb/s流程:未经过编码的源视频--->经过编码的视频(来压缩体积)编码主要就是压缩解码主要就是把压

weixin_51883798的博客 376

YOLO11优化:特征融合 | 金字塔稀疏 Transformer(PST)——一个轻量级、即插即用的模块 | 25年7月最新成果

我们提出金字塔稀疏 Transformer(PST)——一个轻量级、即插即用的模块,通过由粗到细的 token 选择机制和共享注意力参数,在大幅降低计算量的同时保留空间细节。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1062

爬取B站评论+AI情感分析:Python批量抓数据+BERT正负向分类(全流程)

B站作为年轻群体聚集的内容平台,评论区蕴含海量用户真实态度(如好评、吐槽、中立观点),是情感分析的优质数据源!本文分享完整流程:批量爬取B站视频评论→数据清洗去噪→BERT模型情感分类→可视化分析,基于预训练BERT模型实现高精度正负向判断,新手也能快速复刻情感分析系统! 前置配置(关键!获取B站API访问权限) B站评论通过官方API接口返回,无需复杂解析,只需配置用户Cookie即可正常请求: 2. 完整代码(直接复制运行) 三、使用步骤(5步搞定,新手友好) 步骤1:配置关键参数 打开,在类中修改

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1068

多媒体编解码基础知识

1. 多媒体格式分类 多媒体的格式包括三种:封装格式、视频编解码、音频编解码。 1.1. 多媒体封装格式(又称容器) 所谓封装格式就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,也就是说仅仅是一个外壳,或者大家把它当成一个放视频轨和音频轨的文件夹也可以。说得通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗,或者一个锅,用来盛放饭菜的容器。有的人可能觉

zzqhost的专栏 2406

《FPGA接口与协议》专栏的说明与导航

《FPGA接口与协议》专栏的说明与导航(建议阅读)。

孤独的单刀 17万+

鸿蒙5.0版开发:媒体数据封装

开发者可以调用本模块的Native API接口,完成音视频封装,即将音频、视频等编码后的媒体数据,按一定的格式存储到文件里。

m0_73088370的博客 1058

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

音视频多媒体编解码器基础-codec

本文为总结了编解码多媒体的基础,包含了图像视频音频三类编解码算法,片内片外不同编码器的硬件特点,以及编解码的具体实现流程,最后提到了软件常用的ffmpeg框架。

samsion_的博客 2541

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: Linux下pthread_once()函数
下一篇: 基于ndk-r16b编译Android平台的FFmpeg-3.4.2和FFmpeg-4.0动态库
ericbars
博客等级 码龄10年 120粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值