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

14 篇文章 27 订阅
订阅专栏


本篇文件主要分析 音视频文件 是怎么产生的 , 以及 音视频文件是如何播放的 ;





一、视频采集处理流程



视频文件从录像到生成文件的全过程 :

采集图像帧 : 摄像头 硬件 负责 采集画面 , 采集的 初始画面 称为 " 图像帧 " , 一秒钟 采集 的 图像帧 数量 称为 " 帧率 " , 如 : 60 帧 就是 一秒钟采集 60 个画面的 图像帧 ;

  • 采样时需要一个 同步时钟信息 , 记录当前采样的时间 , 这是复用和解复用时进行时钟同步的重要依据 ;
  • 每帧图像帧数据都要打上一个时间戳 ;
  • 图像帧 和 音频采样帧 使用的是 相同的时钟源 , 这样借助该时钟可以进行 音视频同步 操作 ;

图像处理 : 如果想要 对视频画面进行修改 , 如 : 添加滤镜 , 调亮画面 , 增加字幕等 , 可以针对 " 图像帧 " 进行修改 , 修改的过程就是 " 图像处理 " ;

图像帧队列 : 将 处理完毕 的 图像帧 , 放到一个 " 图像帧队列 ( Frame Queue ) " 中 , 等待 视频编码 ;

视频编码 : 在 图像帧队列 ( Frame Queue ) 中的视频画面 , 体积非常大 , 1 分钟可能达到 1GB 大小 , 视频的画面必须要进行 压缩编码 ;

视频包队列 : 将 图像帧 编码 后 , 放到 视频包 中 , 然后 将若干 视频包 放到 " 视频包队列 ( Packet Queue ) " 中 , 等待封装 ;

复用封装 : 使用 复用器视频包队列 和 音频包队列 封装在一起 , 得到 一个 包含 音频 和 视频 的 文件 ;

  • 音频和视频 按照一定的规则 封装到 文件中 , 播放时再按照相同的规则反向解析 , 解析出原始的音视频数据进行播放 ;

视频采样编码封装 的过程 是下图 红色矩形框内的过程 :
在这里插入图片描述





二、音频采集处理流程



音频文件从录音到生成文件的全过程 :

采集音频帧 : 麦克风 硬件 负责 采集音频 , 采集的 初始音频 称为 " 采样 " , 一秒钟 采集 的 采样 数量 称为 " 采样率 " , 如 : 44100Hz 采样率 就是 一秒钟采集了 44100 个采样点 ; 采样帧 一般一帧封装若干采样点 , 如 10 毫秒的采样点 也就是 441 个采样 作为一帧数据 ;

  • 采样时需要一个 同步时钟信息 , 记录当前采样的时间 , 这是复用和解复用时进行时钟同步的重要依据 ;
  • 每帧 采样帧数据都要打上一个时间戳 ;
  • 图像帧 和 音频采样帧 使用的是相同的时钟源 , 这样借助该时钟可以进行 音视频同步 操作 ;

音频处理 : 如果想要 对音频声音进行修改 , 如 : 变声 , 增加混响音效 , 噪声处理 等 , 可以针对 " 音频帧 " 进行修改 , 修改的过程就是 " 音频处理 " ;

采样帧队列 : 将 处理完毕 的 采样帧 , 放到一个 " 采样帧队列 ( Frame Queue ) " 中 , 等待 音频编码 ;

视频编码 : 在 采样帧队列 ( Frame Queue ) 中的 PCM 原始音频数据 , 体积非常大 , PCM 就是 WAV 格式的音频 , 没有经过任何压缩 , 音频必须要进行编码 , 编码为 mp3 或 ogg 格式 , 能压缩 10 倍的大小 ;

  • 1 秒钟有 44100 个采样 , 双通道立体声 , 每个采样 16 位 , 则 1 分钟的音频有 1 × 60 × 44100 × 2 × 2 1 \times 60 \times 44100 \times 2 \times 2 1×60×44100×2×2 字节大小 ;

音频包队列 : 将 采样帧 编码 后 , 放到 音频包 中 , 然后将若干 音频包 放到 " 音频包队列 ( Packet Queue ) " 中 , 等待封装 ;

复用封装 : 使用 复用器视频包队列 和 音频包队列 封装在一起 , 得到 一个包含 音频 和 视频 的 文件 ;

  • 音频和视频 按照一定的规则 封装到 文件中 , 播放时再按照相同的规则反向解析 , 解析出原始的音视频数据进行播放 ;

音频采样编码封装 的过程 是下图 红色矩形框内的过程 :

在这里插入图片描述





三、音视频文件解封装播放流程



拿到 音视频 文件后 , 播放该文件 , 需要经过以下步骤才能播放出来 :


解复用 : 复用 是 将 音频包队列 ( Packet Queue ) 和 视频包队列 ( Packet Queue ) 封装为一个 音视频文件 , purple解复用是 复用 的 逆向过程 , 就是将 音视频文件 解封装为 音频包队列 ( Packet Queue ) 和 视频包队列 ( Packet Queue ) ;


解码操作 : 与上一个章节 编码 操作相对应 , 是 编码 的 逆向过程 ;

  • 音频解码 : 音频包队列 ( Packet Queue ) 通过 音频解码 , 解码为 采样帧队列 Frame Queue ;
  • 视频解码 : 视频包队列 ( Packet Queue ) 通过 视频解码 , 解码为 视频帧队列 Frame Queue ;

音视频同步 : 解码后的 采样帧队列 和 视频帧队列 , 需要 根据每一帧的 时钟信息 , 进行 音视频同步操作 ;


音视频处理 :

  • 音频处理 : 对 解码后的 采样帧 添加效果 , 如 : 混响 , 重低音 , 除噪音 , 变声 , 变调 , 变速 等效果 ;
  • 视频处理 : 对 解码后的 视频帧 添加效果 , 如 : 美颜 , 滤镜 , 亮度 , 字幕 等效果 ;

音视频播放 :

  • 处理后的音频 送到 扬声器 / 耳机 等设备中进行播放 ;
  • 处理后的视频 送到 显示器 设备中播放 ;

在这里插入图片描述

基于FFmpeg和SDL的音视频解码播放的实现过程与相关细节
dvlinker的技术专栏
07-26 272
基于FFMPEG和SDL的音视频解码播放的实现过程与相关细节
音视频解码流程
locahuang的博客
07-26 4000
1、解码整体流程 (1) 音频解码整体流程 (2)视频解码整体流程 2、FFmpeg音视频解码详细流程 3、关键数据结构 AVCodecParser:⽤于析输⼊的数据流并把它分成⼀的压缩编码数据。⽐较形象 的说法就是把⻓⻓的⼀段连续的数据“切割”成⼀段段的数据。 比如:ffmpeg-4.2.1\libavcodec\aac_parser.c AVCodecParser ff_aac_parser = { codec_ids = { AV_CODEC_ID_AAC }, pri..
音视频封装流程深度
最新发布
dont worry about it的博客
08-12 5313
封装,又称为“Demuxing”,是指将一个封装好的音视频文件(如MP4、FLV等)中的音频视频数据流分离出来的过程。这个过程封装的逆操作,它允许我们访问和操作原始的音视频数据,而不受到封装格式的限制。
V4L2驱动的移植与应用(二)
wxzking的专栏
03-05 5232
二、V4L2的应用    下面简单介绍一下V4L2驱动的应用流程。1、  视频采集的基本流程一般的,视频采集都有如下流程:2、  打开视频设备在V4L2中,视频设备被看做一个文件。使用open函数打开这个设备:// 用非阻塞模式打开摄像头设备int cameraFd;cameraFd = open("/dev/video0", O_RDWR | O_NONBLOCK, 0);// 如果用阻塞模式打开摄像头设备,上述代码变为://cameraFd = open("/dev/video0", O_RDWR, 0
音视频播放流程
weixin_33758863的博客
06-22 227
2019独角兽企业重金招聘Python工程师标准>>> ...
8926音频播放流程
zll5258的博客
11-09 585
一、   android本身对播放流程就有一个很完善的控制,能够很好的理AudioTrack服务的运作,对于理决下行数据的处理有个很好的指导作用。 AudioRecord和AudioTrack是音频上行和下行的两大重要服务,本文主要针对下行AudioTrack服务进行流程的详细说明。AudioTrack服务启动之后会把数据传给AudioFlinger,之后会传给hal,最后会传给DSP到
音视频采集
雪梦科技
10-22 1142
原文:http://www.cnblogs.com/tjpfly/archive/2011/06/08/2074735.html 第一步:在功能清单文件AndroidManifest.xml中添加音频刻录和照相机权限:   第二步:编写音频刻录代码: recorder.reset(); recorder.setVideoSource
音视频采集
我有故事你有酒吗?
04-08 660
概述 音视频采集是直播架构的第一环,是视频的来源 其实视频采集有多个应用场景:比如二维码开发 音视频采集包括两部分 视频采集 音频采集 在iOS开发中,是可以同步采集视频&音频的,使用方式也非常简单 相关的采集API都封装在AVFoundation框架中,导入对应框架,实现功能即可 采集步骤 相关API主要在AVFoundation框架中,因此需要先导入框架 创建捕捉会话(AVCaptureSession) 该会话用于连接之后的输入源&输出源 输入源:摄像头&
基于ALSA-FFMPEG实现音频采集与推流功能
02-25
FFmpeg是一个强大的开源工具集,包含了多种用于处理音视频的工具和库,如libavcodec(编码解码)、libavformat(容器格式)、libavfilter(滤镜)等。在音频处理方面,FFmpeg提供了丰富的音频编码器和解码器,支持...
Visual C++音频视频处理技术及工程实践--源码.zip
05-10
- **视频编码解码**:理H.264、VP9等视频编码标准,以及如何在C++中实现解码过程。 - **视频处理**:颜色空间转换、图像增强、去噪、裁剪和旋转等操作。 - **视频处理**:播放、暂停、快进和倒退功能的...
音视频采集系统
04-04
基于ARM的音视频开发,应用PLC技术
音视频信息析工具_MediaInfo.rar
07-25
音视频信息析工具_MediaInfo.rar
音视频开发-FFmpeg-n5.1.2开发库
10-14
它包含了多个库,如libavcodec(编码器库)、libavformat(容器格式库)、libavfilter(过滤器库)和libavutil(通用工具库),为开发者提供了丰富的功能,包括音视频编码解码封装、转码、过滤以及分析等。...
C/C++音视频实战-gb28181系列-pjsip-sip栈-h264安防流媒体服务器
02-19
音视频技术涉及广泛。包括语音信号处理、数字图像处理、...3、然后我们就可以学习音视频的基础知识了:RGB、YUV像素数据处理、PCM音频采样、H.264音视频码流析以及Android平台多媒体相关如:Camera、AudioTrack、Ope
音视频播放】一、播放基础流程及相关服务
qq_38091632的博客
01-18 9277
前言 安利一个音视频博主,他的博文写的很详细。本博文只是简单介绍大致的播放流程。 1 播放音视频文件流程 图片来源 音视频播放流程: 获取音视频来源source(本地文件或者链接) 分离出source中的音频视频extractor 对音视频数据进行解码decoder 解码后的数据进行渲染render(其中包含音视频同步) 渲染后的数据交给device播放 大致流程就这,建议先熟悉这个流程图再结合代码看,代码是实现的那一部分的功能。 2 media相关服务 2.1 查看命令 2.1.1 servic
音视频解码流程
drzeno的博客
10-29 521
下图转自掘金社区: 音视频 FFmpeg解码 转自:音视频 FFmpeg解码 - 知乎 视频解码知识 纯净的视频解码流程 压缩编码数据->像素数据。 例如解码H.264,就是“H.264码流->YUV”。 一般的视频解码流程 视频码流一般存储在一定的封装格式(例如MP4、AVI等)中。封装格式中通常还包含音频码流等内容。 对于封装格式中的视频,需要先从封装格式中提取中视频码流,然后再进行解码。 例如解码MKV格式的视频文件,就是“MKV->H.26..
音视频解码流程
m0_60565784的博客
06-23 730
文章目录1.音频解码过程2.FFmpeg音频流程3.关键函数说明 1.音频解码过程 2.FFmpeg音频流程 3.关键函数说明 avcodec_find_decoder:根据指定AVCodecID查找注册的解码器 av_parser_init:初始化AVCodecParserContext avcodec_alloc_context3:创建AVCodecContext上下文 avcodec_open2:将解码器和解码器上下文进行关联 av_parser_parse2:析获得一个AVPacket
写文章

热门文章

  • 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载 181060
  • 【音乐理论】音与音高 ( 音区 | 小字一组 | 小字组 | 大字组 ) 90989
  • 【Android 应用开发】GitHub 优秀的 Android 开源项目 87808
  • 【C 语言】文件操作 ( fwrite 函数 ) 77116
  • 【Android 应用开发】Android 开发 之 JNI入门 - NDK从入门到精通 72638

分类专栏

  • JavaScript 91篇
  • OpenHarmony 22篇
  • 音视频原理 14篇
  • CSS 142篇
  • GIS 2篇
  • Java AWT / Swing 图形界面编程 42篇
  • Kotlin 协程 44篇
  • Midjourney 20篇
  • 开阔视野 1篇
  • 数据结构 11篇
  • 移动端网页布局 32篇
  • RxJava 3篇
  • HTML 26篇
  • ARCore 1篇
  • JDBC 6篇
  • Redis 18篇
  • 系统架构设计师 19篇
  • ChatGPT
  • FPGA 芯片设计 1篇
  • Android OpenCV 4篇
  • 数学分析 2篇
  • Android 屏幕适配 13篇
  • Android UI 39篇
  • Android RenderScript 3篇
  • Linux 内核 159篇
  • Linux 内核简介 24篇
  • Linux 内核 进程管理 47篇
  • Linux 内核 内存管理 87篇
  • VMware 20篇
  • Android WebSocket 2篇
  • ijkplayer 18篇
  • 数字信号处理 99篇
  • LaTeX 语法 2篇
  • 五线谱 15篇
  • 短视频运营 13篇
  • Android Gradle 插件 188篇
  • Groovy 143篇
  • Git 23篇
  • Windows 逆向 25篇
  • Android 逆向 203篇
  • Android 命令行工具 1篇
  • Python 140篇
  • EventBus 24篇
  • AOP 6篇
  • IOC 8篇
  • 字节码插桩 3篇
  • Java 虚拟机原理 26篇
  • Android 启动过程 8篇
  • 每日随笔 110篇
  • SeeMusic 11篇
  • BLE MIDI 9篇
  • Java 泛型 4篇
  • Google Play 33篇
  • Android 事件分发 16篇
  • Android TV 开发 2篇
  • OkHttp 7篇
  • 插件化 48篇
  • FFmpeg 57篇
  • 人工智能 20篇
  • 算法 29篇
  • 组件化 19篇
  • 广告接入 1篇
  • Android APT 23篇
  • Android Gradle
  • Java 注解 5篇
  • Serverless 3篇
  • 密码学 1篇
  • MATLAB 42篇
  • Qt 6篇
  • Cubase 1篇
  • OpenGL 24篇
  • Android Binder 系统 12篇
  • Android 文件管理 6篇
  • CMake 3篇
  • 鸿蒙 HarmonyOS - Java 版 21篇
  • 音频处理 15篇
  • FluidSynth 2篇
  • Netty 27篇
  • NIO 12篇
  • 计算理论 70篇
  • 音乐理论 3篇
  • Android 性能优化 189篇
  • Android 启动优化 9篇
  • Android 布局渲染优化 6篇
  • Android Protobuf 序列化 8篇
  • Android 安装包优化 38篇
  • Android 电量优化 13篇
  • Android 内存优化 28篇
  • Android 进程保活 15篇
  • Android CPU 优化 1篇
  • Android 热修复 14篇
  • Android 异步操作 23篇
  • Android 安全 49篇
  • 数学 122篇
  • 数理逻辑 13篇
  • 图论 1篇
  • 集合论 34篇
  • 组合数学 70篇
  • 数据挖掘 54篇
  • 计算机网络 92篇
  • TarsosDSP 1篇
  • 软件工程 6篇
  • 设计模式 41篇
  • DBMS 数据库管理系统 10篇
  • OpenGL ES 2篇
  • Android 20篇
  • Android 基础 20篇
  • Android 应用开发 64篇
  • Android NDK 开发 27篇
  • Android 高性能音频 25篇
  • ConstraintLayout 10篇
  • Jetpack 35篇
  • RecyclerView 17篇
  • Android FFMPEG 开发 28篇
  • Android 动画 1篇
  • Android 帧动画
  • Android 属性动画 3篇
  • Android View 动画
  • Android 返回堆栈管理 7篇
  • Android RTMP 26篇
  • 错误记录 301篇
  • Android 系统开发 6篇
  • java 1篇
  • Kotlin 102篇
  • Objective-C 9篇
  • Java 网络编程 18篇
  • Java 并发编程 18篇
  • Flutter 139篇
  • IOS开发 14篇
  • Linux 操作系统 2篇
  • 运筹学 73篇
  • C 142篇
  • iOS 应用开发 10篇
  • 嵌入式开发 20篇
  • 嵌入式开发 15篇
  • Java 集合 2篇
  • UI 设计 1篇
  • 开发环境 67篇
  • UML 5篇
  • Unity3D 42篇
  • 音乐
  • C++ 250篇
  • 英语 2篇
  • 词汇 2篇

最新评论

  • 【FFmpeg】FFmpeg 播放器框架 ① ( “ 解封装 - 解码 - 播放 过程 “ 涉及到的函数和结构体 | AVFormatContext 结构体详解 )

    韩楚风: 很喜欢这篇博客的风格,简洁明了,深入浅出。

  • 【FFmpeg】SDL 音视频开发 ⑦ ( SDL 播放 PCM 音频数据 | 提取 PCM 格式数据 | 设置音频参数 | 打开音频设备 | 设置播放回调函数 | 播放音频数据 | 关闭音频设备 )

    _lazy.: 优质好文,博主的文章细节很到位,感谢博主的分享,文章思路清晰,图文并茂,详略得当,三连支持,期待博主持续输出好文!

  • 【FFmpeg】SDL 音视频开发 ⑦ ( SDL 播放 PCM 音频数据 | 提取 PCM 格式数据 | 设置音频参数 | 打开音频设备 | 设置播放回调函数 | 播放音频数据 | 关闭音频设备 )

    程序边界: 博主的文章总是如一泓清泉,让我心旷神怡,每一篇博客都如一本启发书,我从中汲取灵感,你的文章总是让我拓展了视野,增长了见识,感谢你的专业分享。希望博主继续为我们献上这些珍宝。希望你继续为读者奉献智慧的涵泳。

  • 【FFmpeg】SDL 音视频开发 ⑦ ( SDL 播放 PCM 音频数据 | 提取 PCM 格式数据 | 设置音频参数 | 打开音频设备 | 设置播放回调函数 | 播放音频数据 | 关闭音频设备 )

    Mr.Cssust: 优质好文,博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,期待博主持续带来更多好文

  • 【Android 热修复】热修复原理 ( 加载 Dex 文件到内存中 | DexClassLoader | PathClassLoader | 反射 Element[] dexElements )

    支架: Object myPathListObject = myPathListField.get(dexClassLoader);大佬,这一块的参数应该需要改一下

大家在看

  • 化繁为简:中介者模式如何管理复杂对象交互 781
  • Autosar Dcm开发-诊断2E或31服务实现pending功能
  • 统信服务器操作系统【搭建FTP】设置介绍
  • GPIO 理解(基本功能、模拟案例) 314
  • 进程-管道

最新文章

  • 【FFmpeg】FFmpeg 播放器框架 ① ( “ 解封装 - 解码 - 播放 过程 “ 涉及到的函数和结构体 | AVFormatContext 结构体详解 )
  • 【FFmpeg】SDL 音视频开发 ⑦ ( SDL 播放 PCM 音频数据 | 提取 PCM 格式数据 | 设置音频参数 | 打开音频设备 | 设置播放回调函数 | 播放音频数据 | 关闭音频设备 )
  • 【FFmpeg】SDL 音视频开发 ⑥ ( SDL 播放 YUV 视频 | YUV 4:2:0 采样 | YUV420P 格式介绍 | 获取 YUV 视频文件 | 读取并加载 YUV 画面数据 )
2024
09月 4篇
08月 18篇
07月 24篇
06月 52篇
05月 41篇
04月 45篇
03月 50篇
02月 14篇
01月 56篇
2023年820篇
2022年799篇
2021年1255篇
2020年697篇
2019年97篇
2018年14篇
2017年5篇
2016年7篇
2015年30篇
2014年71篇
2013年24篇

目录

目录

分类专栏

目录

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家焦作商场美陈绿植墙山东玻璃钢雕塑在哪有玻璃钢花盆补漆宁夏仿真人物玻璃钢雕塑哪家好商场圆柱包装新年美陈广州步行街玻璃钢雕塑广东玻璃钢雕塑漆五华区玻璃钢雕塑加工厂家哪里好沈阳玻璃钢人像雕塑成都玻璃钢雕塑制品沧州人物玻璃钢雕塑漳平玻璃钢人物雕塑户外摆件玻璃钢户外雕塑玻璃钢仿真酒瓶雕塑佛山玻璃钢景观雕塑规格四川玻璃钢花盆费用龙泉玻璃钢雕塑咨询电话北京玻璃钢雕塑的特点重庆玻璃钢雕塑企业呈贡玻璃钢大型雕塑设计贵不贵玻璃钢浮雕雕塑小品厂家上街玻璃钢雕塑出租多少钱一天清远玻璃钢卡通雕塑商场中庭新年美陈西平玻璃钢雕塑设计武乡玻璃钢雕塑厂家丽水人物玻璃钢雕塑设计碧桂园玻璃钢熊猫雕塑玻璃钢仿青铜鹿雕塑重庆大型玻璃钢恐龙雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化