FFMPEG视音频编解码学习笔记

开篇

一直对音视频这块比较感兴趣,但是一直不知道从何下手,终于找到了比较好的资料,希望通过接下来的时间好好研究一下FFMPEG相关的知识,这里感谢一下雷霄骅大神,大神虽去但是留下来多少经典的文章,虽然都是通信出身,相比之下太多惭愧,唯有努力学习了。希望通过简书能够记录学习过程中的心得体会,以及觉得重要的知识点,以作备忘。

音视频编码技术基础

我们常见的avi,rmvb,mp4,flv,mkv等格式的视频,他们的后缀代表的是他们的封装格式的不同,就是把视频数据和音频数据按照既定的规范进行打包个和规范。但是这个后缀只是一种简单的方式我们并不能发现他其中的编码标准,通过mac的显示文件简介我们可以看到,他采用了AAC的音频编码和H.264的压缩编码标准。


“loginmovie_mp4”简介.png
  • 视频播放器原理
视频播放的步骤

如上图所示,视频播放主要主要几个步骤主要为:解协议(网络视频) - >解封装->视频解码 ->视音频同步
个人理解可以简单的概括为一下内容:协议有RTMP,HTTP等,解析仪后得到FLV(RTMP协议解析的)等形式的数据。之后我们再对FLV等格式的数据进行解封装,得到的是H.264编码的视频码流和AAC编码的音频码流。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。

  • H.264和AAC
    H.264将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量,目前H.264是主流的编码标准,目前主流的直播软件大部分使用的都是这种编码方式。
    AAC音频编码的主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。
  • 直播和点播的对比
    目前主流的直播软件采用的技术一般都是,RTMP协议+FLV格式+H.264视频编码格式+AAC音频编码格式
    点播平台采用的技术:HTTP协议+FLV格式或MP4格式+H.264视频编码格式+AAC音频编码格式

RGB、YUV像素数据处理

YUV主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色,YUV百度百科介绍

H.264视频码流解析

视频.png

原文:视音频数据处理入门:H.264视频码流解析,包含代码。
H.264原始码流(又称为“裸流”)是由一个一个的NALU组成的。1个NALU存储1帧画面的压缩编码后的数据。压缩方法能够将图像数据压缩100倍以上。
他们的结构如下图所示。

结构图

其中每个NALU之间通过startcode(起始码)进行分隔,起始码分成两种:0x000001(3Byte)或者0x00000001(4Byte)。如果NALU对应的Slice为一帧的开始就用0x00000001,否则就用0x000001。
H.264码流解析的步骤就是首先从码流中搜索0x000001和0x00000001,分离出NALU;然后再分析NALU的各个字段。
那么NALU指的是什么呢?由文中的代码可以看到NALU分为多个类型。H264在网络传输的是NALU,NALU的结构是:NAL头+RBSP,实际传输中的数据流如图所示:

NALU的结构图

H264--2--语法及结构对NAL头和RBSP讲解还是比较多的,推荐。
源码中我们提供H.264源码的文件,通过C语言代码的程序能够打印出视频码流解析的数据。如果我们使用ESEyE工具,显示H.264的源数据文件,显示的内容如下:

ESEyE工具显示的效果图

上图中纵坐标代表数据量的大小
I帧 当做一张图片直接压缩 不依赖于其他的帧
P帧 会依赖前面的帧 不在存储 I帧 已经存储的数据
B帧 依赖于前面的帧和后面的帧 双向参考 达到更大的压缩率

AAC音频码流解析

原理:AAC原始码流(又称为“裸流”)是由一个一个的ADTS frame组成的。他们的结构如下图所示。

AAC码流结构图.jpg

其中每个ADTS frame之间通过syncword(同步字)进行分隔。同步字为0xFFF(二进制“111111111111”)。AAC码流解析的步骤就是首先从码流中搜索0x0FFF,分离出ADTS frame;然后再分析ADTS frame的首部各个字段。
原文包含AAC音频码流解析代码

FLV封装格式解析

FLV封装格式是由一个FLV Header文件头和一个一个的Tag组成的。Tag中包含了音频数据以及视频数据。FLV的结构如下图所示。

FLV结构图

原文包含FLV封装格式解析代码.

后记

看完这几篇博客研究了下C的代码,觉得懵懵懂懂,坚持下去吧,接着学习去吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容

  • 视频播放器原理 视频播放器播放一个网上文件主要进过以下几个流程: 解协议 封装格式数据 解封装 视/音频压缩数据 ...
    风与鸾阅读 992评论 1 1
  • 前言 由于近期项目用到FFmpeg库进行视频解码,涉及到视音频的一些相关知识,遂恶补之。 视频像素数据处理 YUV...
    ORCLee阅读 848评论 0 1
  • 视频编码与封装方式详解 1.编码方式和封装格式 2.视频编码标准两大系统 MPEG-1 MPEG-2 MPEG-3...
    latthias阅读 6,349评论 0 22
  • 以前做视频播放器开发的时候,只知道请求服务器,然后服务器返回一个播放串。这样视频就播放了 其它的操作比如UI定...
    若幹年後阅读 3,227评论 8 38
  • 毛孔中任性地渗出的汗滴在八月并不温柔的阳光里发酵着,先挤上额头,继而顺着被烈日烘焙得红通通的脸颊淌下,然后浸润沾满...
    离兮憂兮阅读 457评论 0 0