FLV
This is my study note of FLV.
本文图片均是源自网上,仅是笔记
FLV(Flash Video)是Adobe公司推出的一种流媒体格式,由于其封装后的音视频文件体积小、封装简单等特点,非常适合于互联网上使用。
table
{
margin: auto;
}
table
{
margin: auto;
}
概述FLV封装格式是由一个文件头(flie header)和文件体(file Body)组成,其中文件体又由若干个Previous Tag Size字段+tag组成。Previous Tag Size排在tag之前,由4个字节组成,它记录了前一个Tag的大小,用于逆向读取处理。Flv header后的第一个Previous Tag Size为0。,一般Tag可分为三个种类:脚本(帧)数据类型、音频数据类型、视频数据。
FLV文件详细内容
三种Tag包1.Script Tag Data结构此类型的Tag存放一些关于音视频的元信息,例如duration、width、height等,通常它会做为Flv文件的第一个tag,并且只有一个。 ...
ffmpeg
This is my study note of ffmpeg.
table
{
margin: auto;
}
table
{
margin: auto;
}
这文记录部分ffmpeg命令。
1.容器视频本身其实就是一个容器,包括了音频、视频,也有可能包括字幕等内容,我们可以通过以下命令查看支持的容器类型:
1ffmpeg -formats
2.编码格式不同的编码格式会有不同的压缩率,会导致文件大小和清晰度的差异。查看编码格式如下:
1ffmpeg -codecs
3.编码器编码器是实现某种编码格式的库文件,以下命令可以查看已安装的编码器:
1ffmpeg -encoders
4.ffmpeg的使用格式1ffmpeg [1] [2] -i [3] [4] [5]
上述命令的含义如下:
123451.全局参数2.输入文件参数3.输入文件4.输出文件参数5.输出文件
5.常用的命令行参数123456789101112131415161718192021-c : 指定编码器-c copy : 直接复制,不经过重新编码-c:v : 指定视频编码器-C:a ...
MP4
This is my study note of MP4.
table
{
margin: auto;
}
table
{
margin: auto;
}
MP4全名为MPEG-4 Part 14,属于MPEG-4的一部分。
基本概念
Box1MP4由一个一个Box组成,它由Header+Date组成,Data可以存储媒体元数据和实际的音视频码流数据。Box里可以直接存储数据块也可以包含其他的Box,这种Box叫做container box。
从图中可以看出,在Box的Header头部,size指定了这个Box的大小,一般头部大小就是8字节
Sample1采样,对于视频而言可以理解为一帧数据,对于音频一帧数据就是一段固定时间的音频数据,即多个sample,存储媒体数据的单位为Sample。
Track1Sample的集合,一个视频序列或者音频序列。除了媒体数据,Track还可以包含其他非媒体数据,如指示信息和字幕信息。
Chunk1一个track内,连续几个Sample称为Chunk,每个Chunk都有一个偏移量,整个偏移量从文件头算起。
MP4文件 ...
H264
This is my study note of H.264.
table
{
margin: auto;
}
table
{
margin: auto;
}
H264功能结构
视频编码层(Vedio coding layer)1负责压缩编码视频数据的内容,主要包括帧内压缩、帧间压缩、变换量化、熵编码等。
网络抽象层1将VCL数据封装到NAL单元中,并提供头信息,保证数据适合信道和各种存储介质上的传输。
H264帧类型H264结构中,一个视频图像编码后的数据叫做一帧,一帧图像由一个片或多个片组成,一个片由一个或多个宏块组成,一个宏块由16×16的yuv数据组成,H264编码的基本单位是宏块。经过压缩的帧:
I帧
1关键帧,采用帧内压缩技术。可以理解为这一帧数据完全保留,解码时只需要本帧数据就可以完成。
P帧只参考前面以及处理好的帧。
B帧双向参考帧,压缩时即会参考前面的帧又会参考之后的帧。
IDR帧
1一个序列的第一个图像叫做IDR帧,IDR帧都是I帧。当解码器解码到IDR帧时,会清空参考帧队列,将已解码的数据全部输出或者抛弃,重新查找参数集 ...
音视频开发
This is my study note of Audio and video development.
table
{
margin: auto;
}
基础概念帧内压缩和帧间压缩
帧内压缩1帧内压缩(Intra-frame Compression)是指对视频帧内部的像素进行压缩。每一帧都被独立地进行编码,不依赖于前后帧的信息。这种压缩技术主要通过去除冗余信息和空间域的压缩算法来实现,比如使用离散余弦变换(DCT)来将图像分解为频域系数,再利用量化和熵编码等方法来减少数据量。帧内压缩能够提供较好的静态图像质量,适用于静止或运动不剧烈的场景。
帧间压缩1帧间压缩(Inter-frame Compression)是指利用相邻帧之间的冗余性来进行压缩。视频序列中的连续帧之间通常具有相似的内容和运动矢量。帧间压缩采用差异编码的策略,通过记录当前帧与参考帧之间的差异来表示图像内容。通常使用运动估计与补偿来寻找最佳的参考帧,并利用运动矢量来表示像素位移。这样就可以仅保存差异信息,从而减少数据量。帧间压缩能够提供更高的压缩比,适用于动态场景。
如何采集音频振膜通过空气抖动的幅度 ...
操作系统-basic concept
This is my study note of operating system.
table
{
margin: auto;
}
img[alt="Alt text"]
{
width:400px;
align:center;
}
这段学习中使我印象最深的两句话:
一切皆文件,Linux系统下,一切皆文件,硬件设备也是文件
有问题找男人:可以使用man来查看命令帮助手册
从图中我们可以看出操作系统是硬件和软件间的媒介,是最基本的软件。
/etc下主要配置文件名解释
file
explain
/etc/hosts
主机名到IP地址的映射关系的文件
/etc/resolv.conf
DNS服务的配置文件
/etc/gateways
建立动态路由需要用到的文件
/etc/services
定义了网络服务的端口
命令返回码
返回码
explain
0
操作执行成功
1
操作不允许
2
没有文件或目录
3
进程不存 ...
algorithm
reference:
https://blog.csdn.net/weixin_50886514/article/details/119045154
This is my study note of algorithm.
table
{
margin: auto;
}
img[alt="Alt text"]
{
width:350px;
align:center;
}
排序算法1、插入排序
从上图中我们可以得到:
首先认为第一个数据已排序
从第item数据开始,从后往前排序,直到无法再前进
遍历到无法前进时,插入到此时的位置
重复上述操作,直到排序完全
情况
时间复杂度度
空间复杂度
最差
$O(N^2)$
O(1)
最优
$O(N)$
O(1)
代码表示如下:
1234567891011121314151617181920void inSert(int *data, int num){ for(int i=0; i < num-1; i++) { int end = i ...
C++拓展
This is my study note of C++.
table
{
margin: auto;
}
1.可变参数宏__VA_ARGS__为可变参数宏,C99中加入的宏。
1#define varPrint(fmt, ...) printf(fmt, __VA_ARGS__)
2.常见宏定义
__DATE__当前日期, “MMM DD YYYY” 格式
__TIME __ 当前时间, “HH:MM:SS” 格式
__FILE __ 这会包含当前文件名,一个字符串常量
__LINE __ 这会包含当前行号,一个十进制常量
__FUNCTION __ 程序预编译时预编译器将用所在的函数名,返回值是字符串
1#define varPrint(...) printf(__VA_ARGS__, "%d -%s %s",__LINE__, __DATE__, __TIME__)
3.内存分配
从静态存储区域分配1内存在程序 编译 时就已经分配好,这块内存在程序的整 个运行期间都存在 ,速度快、不容易出错 。
在栈上分配1在执行函数时, 函数内局部变 ...
OSI
table
{
margin: auto;
}
This is my study note of OSI.
OSI structure   首先,让我们看看OSI的大体框图。   从图中我们可以知道,OSI由物理层、数据链路层、网络层、传输层、会话层、表示层以及应用层组成组成。此时,地址暂时只有MAC地址(网卡自带,不可修改)。
物理层  主要解决两个设备如何通信的问题,同时定义了网线的接口类型、光纤的接口类型等物理设备标准。
 其主要作用是用于数据的传输,将01信号转换为电信号进行传输,同时数据到达后将数据重新转换回01信号(数模、模数间的转换),期间传输的数据为比特。
物理层的协议:
s 232c
RS 449/422/423
V.24
x.21
数据链路层 由于物理链路中,数据传输常常存在各种干扰,导致数据的不准确。数据链路层的作用就是通过协议,将不可靠的物理数据链路转换为可靠的数据链路。
&am ...
ffmpeg
This is my study note of FFMPEG.
Basic structure1、AVCodeContext123456789101112131415161718typedef struct AVCodecContext{ int bit_rate; // 码率 int frame_number; // 帧号,指定解码顺序 unsigned char *extradata; // 主要保存SPS、PPS等信息 int extradata_size; int width, height; enum PixelFormat pix_fmt; // 每个像素的颜色数据的格 ...