- 博客(132)
- 收藏
- 关注
转载 FFmpeg多媒体文件格式探测
FFmpeg版本:3.4在FFmpeg中,每一种文件容器格式都对应一种AVInputFormat 结构,位于源码中libavformat文件夹中。当调用avformat_open_input的时候,FFmpeg会根据媒体封装格式的特点(主要是根据AVInputFormat结构的read_probe函数根据传入的一段buffer来判断传入的文件是否能被解析为该AVInputFormat...
2018-09-20 09:12:00
773
转载 MPEG-2码流结构分析
MPEG2视频编码定义在 ISO/IEC13818-2中,MPEG2 video sequence如下图所示我们可以借助Elecard Stream Analyer工具来分析MPEG2视频码流MPEG2编码码流的起始码的含义如下1.Sequence HeaderMPEG2视频裸流的每一个GOP以Sequence Header开头,Seque...
2018-06-30 10:02:00
775
转载 【译】PGS字幕
PGS(Presentation graphic stream):图形字幕流,是用来显示蓝光电影中的字幕的流。当蓝光盘中的PGS格式的字幕被分离存储的时候通常保存在一个以sup为扩展名的文件中。(也可以以字幕流的形式封装在TS文件的pes包中)。PGS有一个个的功能片段组成,这些片段通常包含下面的头部。DTS用来指示何时开始解码字幕图片,PTS用来指示何时将字幕图片展示在屏幕...
2018-06-09 09:37:00
1600
转载 FFmpeg库简介
1.FFmpeg基本组成FFmpeg框架的基本组成包含AVFormat、AVCodec、AVFilter、AVDevice、AVUtils等模块库,如下图所示。libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;音视频的格式解析协议,为 libavcodec 分析码流提供独立的音频或视频码流源。l...
2018-05-19 23:05:00
166
转载 7. H.264的句法和语义
1.句法在编码器输出的码流中,数据的基本单位是句法元素,每个句法元素由若干比特组成,它表示某个特定的物理意义,例如:宏块类型、量化参数等。句法表征句法元素的组织结构,语义阐述句法元素的具体含义。 所有的视频编码标准都是通过定义句法和语义来规范编解码器的工作流程。1.1.句法元素的分层结构编码器输出的比特码流中,每个比特都隶属某个句法元素,也就是说,码流是由一个个句法元素依次...
2018-04-23 20:42:00
189
转载 6. H.264/AVC编码器原理
1. H.264/AVC的应用H.264 不仅具有优异的压缩性能,而且具有良好的网络亲和性,这对实时的视频通信是十分重要的。和 MPEG-4 中的重点是灵活性不同,H.264 着重在压缩的高效率和传输的高可靠性,因而其应用面十分广泛。H.264 支持三个不同档次:基本档次:主要用于“视频会话”,如会议电视,可视电话,远程医疗、远程教学等;扩展档次:主要用于网络的视频流,如...
2018-03-18 17:07:00
225
转载 5.MPEG-4 压缩编码标准
1.MPEG-4标准概述与MPEG1和MPEG2标准相比,MPEG-4 更加注重多媒体系统的交互性和灵活性,主要应用于可视电话、视频会议等。MPEG-4 标准主要包含音视频对象编码工具集和编码对象句法语言两个部分。MPEG-4 标准的编码基于对象,便于操作和控制对象,MPEG-4 的对象操作使用户可在终端直接将不同对象进行拼接,得到用户合成图像。MPEG-4 具有很...
2018-02-27 09:12:00
474
转载 FLV文件格式解析
1.FLV文件整体结构FLV文件由FLV header和FLV body组成,FLV body由一系列的FLV tags组成,如下图所示tag又可以分成三类:audio,video,script,分别代表音频流,视频流,脚本流,而每个tag又由tag header和tag data组成。每个Tag前面还包含了Previous Tag Size字段,表示前面一个Tag的大小。整...
2018-01-13 09:24:00
169
转载 Mp4文件格式解析
1.ISO/IEC 14496标准ISO/IEC 14496是MPEG专家组制定的MPEG-4标准,分为多个部分(仍在更新)。参考:https://en.wikipedia.org/wiki/Category:ISO/IEC_14496第一部分(ISO/IEC 14496-1):系统:描述视频和音频数据流的控制、同步以及混合方式(即混流Multiplexing,简写为M...
2018-01-12 22:38:00
345
转载 4.视频编码标准简介
1.视频编码发展简史1988 年CCITT 通过了“p×64Kbps(p=1,2,3,4,5,,,,30) ”视像编码标准 H.261 建议, 被称为视频压缩编码的一个里程碑。从此,ITU-T、 ISO 等公布的基于波形的一系列视频编码标准的编码方法都是基于 H.261 中的混合编码方法。1986 年,ISO 和 CCITT 成立了联合图像专家组(JPEG,Joint Phot...
2018-01-10 23:17:00
651
转载 3.视频压缩编码的基本原理
1.预测编码1.1.预测编码基本概念预测法是最简单和实用的视频压缩编码方法,这时压缩编码后传输的并不是像素本身的取样幅值,而是该取样的预测值和实际值之差。大量统计表明,同一副图像的临近像素之间有着相关性,或者说这些像素值相似。而且同帧图像中邻近行之间对应位置的像素之间也有较强的相关性。人们可以利用这些性质进行视频压缩编码。如图,同一帧内的临近像素中与 X 之间的距...
2018-01-01 00:04:00
293
转载 2.数字视频原理
视频压缩编解码技术就是对数字的视频信号进行压缩和解压缩的过程。1.数字电视的PCM原理将输入的模拟电视信号变成输出的数字电视信号需经过取样、量化、编码三个步骤,由 A/D 变换器完成这三个步骤。取样:所谓取样,就是在时间轴上把连续变化的模拟信号变为离散量的过程。量化:取样后的脉冲信号在时间上是离散的,但在幅值上空间上仍是连续...
2017-12-28 23:59:00
457
转载 1.视频压缩编码综述
1.预测编码一幅图像由许多个像素点组成,大量的统计表明,同一副图像中像素之间具有较强的相关性。两个像素之间的距离越短,则其相关性越强。即两个像素的值越接近。于是,人们可以利用这种像素间的相关性进行压缩编码例如,当前像素为X,可用a、b或c,或者三者的线性加权来预测。这些a、b、c被称为参考像素。在实际传送时,把实际像素X(当前值)和参考像素(预测值)相减。简单起见传送X-...
2017-12-23 00:28:00
309
转载 WebRTC相关的基础知识点
这里主要用来记录自己整理的和webRTC相关的一些基本的知识点,后续整理的一些基础和零碎的知识点都会更新在这里。内容大部分来自于webRTC官网、w3c以及一些前辈们的博客中的文章和相关书籍等。2017年12月3日更新:1.peer connection相关的协议ICE交互式连接建立Interactive Connectivity Establishment (ICE)...
2017-12-03 00:25:00
157
转载 peerconnection_client分析笔记
Windows版本的peerconnection_client demo是一个win32程序,入口函数为main.cc里面的wWinMain,程序整体流程就从这个入口函数下手开始分析。1.peerconnection_client demo中主要的类的关系整个demo中有3个主要的类分别是窗口类MainWnd,它的主要功能是实现了一个窗体程序,然后是PeerConnection...
2017-11-20 21:24:00
196
转载 webRTC peerconnection_client demo创建VS工程
编译了webRTCWindows源码之后,想使用编译出来的库写一个demo出来,但是又不知到怎么下手。就想通过源码中带的示例peerconnection_client和peerconnection_server来学webRTC peerconnectionAPI的使用方法。为了更方便的调试和了解webRTC库的使用,就萌生了把peerconnection_client和...
2017-11-13 23:39:00
636
转载 C++深度解析教程学习笔记(6)对象的构造和销毁
1. 对象的初始化(1)从程序设计的角度看,对象只是变量,因此:①在栈上创建对象时,成员变量初始化为随机值②在堆上创建对象时,成员变量初始化为随机值③在静态存储区创建对象时,成员变量初始化为 0 值成员变量的初始化#include <stdio.h>class Test{private: int i; int j...
2017-11-02 09:12:00
168
转载 C++深度解析教程学习笔记(5)面向对象
1. 面向对象基本概念(1)面向对象的意义在于①将日常生活中习惯的思维方式引入程序设计中②将需求中的概念直观的映射到解决方案中③以模块为中心构建可复用的软件系统④提高软件产品的可维护性和可扩展性(2)类和对象是面向对象中的两个基本概念类对象概念指的是一类事物,是一个抽象的概念指的是属...
2017-10-30 20:19:00
124
转载 C++深度解析教程学习笔记(4)C++中的新成员
1. 动态内存分配(1)C++通过 new 关键字进行动态内存申请,是以类型为单位来申请空间大小的(2)delete 关键字用于内存释放▲注意释放数组时要加[],否则只释放这个数组中的第 1 个元素。C++中的动态内存分配#include <stdio.h>int main(){ int* p = new int; *p...
2017-10-30 09:13:00
112
转载 C++深度解析教程学习笔记(3)函数的扩展
1.内联函数1.1.常量与宏的回顾(1)C++中的 const 常量可以替代宏常数定义,如:const int A = 3;//等价于#define A 3(2)C++中是否有解决方案,可以用来替代宏代码片段呢?1.2.内联函数的定义(1)C++编译器可以将一个函数进行内联编译,被 C++编译器内联编译的函数叫内联函数。(2)C++中使用 in...
2017-10-28 00:33:00
250
转载 C++深度解析教程学习笔记(2)C++中的引用
1.C++中的引用(1)变量名的回顾 ①变量是一段实际连续存储空间的别名,程序中通过变量来申请并命名存储空间 ②通过变量的名字可以使用存储空间。(变量的名字就是变量的值,&变量名是取地址操作)(2)C++中新增加了引用的概念 ①引用可以看作一个己定义变量的别名 ②引用的语法:Type& name = var; //Type 为...
2017-10-26 09:13:00
104
转载 C++深度解析教程学习笔记(1)C到C++的升级
1.现代软件产品架构图比如商场收银系统2.C 到 C++ 的升级2.1变量的定义C++中所有的变量都可以在需要使用时再定义,而 C 语言中的变量都必须在作用域开始位置定义。2.2 register 关键字(1)register 关键字请求编译器将局部变量存储于寄存器中在 C++中依然支持 register 关键字,但这只是为了兼容 C,C++编译器有自...
2017-10-21 23:50:00
131
转载 VS2015 MSVC编译FFMPEG
1.下载安装msys2http://www.msys2.org/下载msys2下载安装完成后,在msys2的shell中安装编译FFMPEG必要的命令行工具pacman -S make gcc diffutils yasm pkg-config2.配置编译环境编辑C:\msys64\msys2_shell.cmd将rem set MSYS2_P...
2017-10-21 00:49:00
326
转载 MPEG-PS封装格式
据传输媒体的质量不同,MPEG-2中定义了两种复合信息流:传送流(TS:TransportStream)和节目流(PS:ProgramStream)PS文件分为3层:ps层(Program Stream)、pes层(Packet Elemental Stream)、es层(Elementary Stream)。es层就是音视频数据,pes层是在音视频数据上加了时间戳等对数据帧的说...
2017-10-20 21:01:00
851
转载 MXF文件结构浅析
MXF是英文Material eXchange Format(素材交换格式)的缩语。MXF是SMPTE(美国电影与电视工程师学会)组织定义的一种专业音视频媒体文件格式。MXF主要应用于影视行业媒体制作、编辑、发行和存储等环节。SMPTE为其定义的标准包括:SMPTE - 377M、SMPTE - EG41、SMPTE - EG42等,并不断进行更新和完善。它是一个外壳格式 而不是压缩格式...
2017-09-12 13:06:00
637
转载 Windows FFMPEG开发环境配置
1.去FFMPEG网站上下载Dev版本的库,里面有我们需要的头文件和lib文件,然后下载Shared版本的库,里面有我们需要的dll文件http://ffmpeg.zeranoe.com/builds/记得区分32位和64位的库,这里碰到一个大坑,就是我下载的是64位的库,但是创建工程的时候选的是32位的工程,导致链接的时候一直报无法解析的外部符号 _av_registe...
2017-08-12 21:02:00
249
转载 从文件中读取yuv和h264数据
1.从文件中读取h264数据参考ffmpeg avc.c写的从文件中一帧帧读取h.264数据的demo#include <stdio.h>#include <stdlib.h>#include <stddef.h>#include <string.h>char* filebuf_;const char* ...
2017-07-31 19:37:00
365
转载 TS封装格式
ts流最早应用于数字电视领域,其格式非常复杂包含的配置信息表多达十几个,视频格式主要是mpeg2。苹果公司发明的http live stream流媒体是基于ts文件的,不过他大大简化了传统的ts流,只需要2个最基本的配置表PAT和PMT,再加上音视频内容就可以了,hls流媒体视频编码的主要格式为h264/mpeg4,音频为aac/mp3。ts文件分为三层:ts层(Transport...
2017-07-18 09:35:00
466
转载 H.264学习笔记
1.帧和场的概念视频的一场或一帧可用来产生一个编码图像。通常,视频帧可以分成两种类型:连续或隔行视频帧。我们平常看的电视是每秒25帧,即每秒更换25个图像,由于视觉暂留效应,所以人眼不会感到闪烁。每帧图像又是分为两场来进行扫描的,这里的扫描是指电子束在显像管内沿水平方向一行一行地从上到下扫描,第一场先扫奇数行,第二场扫偶数行,即我们常说的隔行扫描,扫完两场即完成一帧图像。当场频为50...
2017-05-30 13:50:00
215
转载 FFMPEG音视频解码
1.播放多媒体文件步骤通常情况下,我们下载的视频文件如MP4,MKV、FLV等都属于封装格式,就是把音视频数据按照相应的规范,打包成一个文本文件。我们可以使用MediaInfo这个工具查看媒体文件的相关信息。所以当我们播放一个媒体文件时,通常需要经过以下几个步骤①解封装(Demuxing):就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封...
2017-05-01 12:16:00
704
转载 数据结构与算法笔记(3) 排序算法基础
1.什么是排序排序就是将一个数据元素(或记录)的任意序列,通过一定的方法重新排列成一个按关键字有序的序列的过程。2.排序的稳定性假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。稳定的排序的优点是,从...
2017-04-16 17:12:00
227
转载 数据结构与算法笔记(2)线性表
1.线性结构的定义线性结构是由零个或多个具有相同类型的数据元素组成的的有限序列,如下图所示在数据元素的非空有限集中存在唯一的一个被称作“第一个”的数据元素存在唯一的一个被称作“最后一个”的数据元素除第一个元素外,集合中的每个数据元素均只有一个前驱除最后一个元素外,集合中的每个数据元素均只有一个后继简言之,线性结构反映结点间的逻辑关系是 一对一 的。...
2017-04-12 20:22:00
282
转载 Android webRTC 代码下载编译
1、安装depot toolsgit clone https://chromium.googlesource.com/chromium/tools/depot_tools.git然后把把depot_tools添加到环境变量中去export PATH=path_to_depot_tools:$PATH2.下载代码创建一个工作目录mkdir web...
2017-04-11 23:27:00
62
转载 数据结构与算法笔记(1)基本概念
1.什么是数据结构用计算机解决一个具体的问题,需要以下几个步骤:从具体问题抽象出一个适当的数学模型;设计一个解此数学模型的算法;编出程序;进行测试、调整直至得到最终解答。寻求数学模型的实质:分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。很多问题求解最后都转化为求解数学方程或数学方程组。如:求解梁架结构中...
2017-04-09 23:01:00
223
转载 多媒体基础知识之YUV数据
1.什么是YUV格式YUV,是一种颜色编码方法。Y表示明亮度(Luminance、Luma),也就是灰度值。U和V则是色度、浓度(Chrominance、Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不...
2017-04-07 08:34:00
264
转载 多媒体基础知识之PCM数据
1.什么是PCM音频数据PCM(Pulse Code Modulation)也被称为脉冲编码调制。PCM音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准的数字音频数据。2.PCM音频数据是如何存储的如果是单声道的音频文件,采样数据按时间的先后顺序依次存入(有的时候也会采用LRLRLR方式存储,只是另一个声道的数据为0),如果是双声道的话就按...
2017-04-01 23:04:00
117
转载 FFmpeg在Linux下编译使用
1.FFmpeg编译1.1.安装yasm这里我是直接通过ubuntu包安装的,当然也可以通过编译源码来安装。sudo apt-get install yasm1.2.下载FFmpeggit clone https://git.ffmpeg.org/ffmpeg.git1.3.配置、编译FFMPEG./configure --prefix=h...
2017-04-01 13:06:00
373
转载 AndroidStudio 中使用FFMPEG
1.下载 FFmpeg 源码git clone https://git.ffmpeg.org/ffmpeg.git这一步可能会花比较长的时间2.编译 FFmpeg for Android2.1.修改 FFmpeg 的 configure由于FFMPEG默认编译出来的动态库文件名的版本号在.so之后(例如“libavcodec.so.5.100.1”),但是an...
2017-04-01 00:32:00
257
转载 Android 音频播放分析笔记
AudioTrack是Android中比较偏底层的用来播放音频的接口,它主要被用来播放PCM音频数据,和MediaPlayer不同,它不涉及到文件解析和解码等复杂的流程,比较适合通过它来分析Android系统播放音频数据的过程。下面是https://developer.android.com/reference/android/media/AudioTrack.html对AudioTr...
2017-02-26 22:11:00
574
转载 【转载】基于TINY4412的Andorid开发-------简单的LED灯控制
阅读目录(Content)一、编写驱动程序二、编写代码测试驱动程序三、编写HAL代码四、编写Framework代码五、编写JNI代码六、编写App参考资料:《Andriod系统源代码情景分析》《嵌入式Linux系统开发完全手册_基于4412_上册》作者:彭东林邮箱:pengdonglin137@163.com...
2017-01-02 13:39:00
130
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人