![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
音视频
文章平均质量分 88
落樱弥城
无无
展开
-
FFmpeg5.0源码阅读——格式检测
在拿到一个新的格式后,FFmpeg总是能够足够正确的判断格式的内容并进行相应的处理。本文在描述FFmpeg如何进行格式检测来确认正在处理的媒体格式类型,并进行相应的处理。原创 2024-07-01 15:46:19 · 468 阅读 · 0 评论 -
X264编码器参数
H.264是ITU(International Telecommunication Unite 国际通信联盟)和MPEG(Motion Picture Experts Group 运动图像专家组)联合制定的视频编码标准。从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准里称为H.264,在MPEG的标准里是MPEG-4的一个组成部分–MPEG-4 Part 10,又叫Advanced Video Codec,因此常常称为MPEG-4 AVC或直接叫AVC。原创 2024-05-02 21:59:12 · 922 阅读 · 0 评论 -
H264之NALU结构详解
NAL层即网络抽象层(Network Abstraction Layer),是为了方便在网络上传输的一种抽象层。一般网络上传输的数据包有大小限制,而AVC的帧大小远远大于网络传输的字节大小限制。因此要对AVC的数据流进行拆包,将一帧数据拆分为多个包传输。和NAL层相对是VAL层,即视频编码层(Video Coding Layer)NALU就是经过分组后的一个一个数据包。每个NALU由一个1字节的NALU头部和一个包含控制信息或编码视频数据的字节流组成。NALU头部包含了NALU的类型以及其重要性的信息。原创 2023-12-10 08:08:41 · 978 阅读 · 0 评论 -
Jpeg文件格式详解
JPEG(Joint Picture Expert Group)编解码标准是由国际标准化组织(ISO)和CCITT联合制定的静态图象有损压缩编码标准(标准也定义了无损压缩内容但是大多数系统都不支持)。JPEG是一种编解码标准不是一种文件格式,其对应的文件格式有JIF,JPEG/JFIF,JPEG/EXIF等。原创 2023-09-03 16:50:46 · 2745 阅读 · 0 评论 -
FFmpeg5.0源码阅读——FFmpeg大体框架(以GIF转码为示例)
前一段时间熟悉了下FFmpeg主流程源码实现,对FFmpeg的整体框架有了个大概的认识,因此在此做一个笔记,希望以比较容易理解的文字描述FFmpeg本身的结构,加深对FFmpeg的框架进行梳理加深理解,如果文章中有纰漏或者错误欢迎指出。本文描述了FFmpeg编解码框架的工程结构,基本构成以及大体的调用流程。因为FFmpeg的滤镜是相对独立的一个模块,因此在此不会进行描述。原创 2023-08-26 17:09:39 · 1927 阅读 · 0 评论 -
FFmpeg5.0源码阅读——URLContext和URLProtocol
本文描述FFmpeg中URLContext和URLProtocal的实现。原创 2023-08-26 12:50:10 · 753 阅读 · 0 评论 -
FFmpeg5.0源码阅读——VideoToobox硬件解码
本文描述了FFmpeg中。原创 2023-08-19 17:20:16 · 2107 阅读 · 0 评论 -
FFmpeg5.0源码阅读——av_interleaved_write_frame
本文主要详细描述FFmpeg中封装时写packet到媒体文件的函数。原创 2023-07-30 20:33:23 · 1639 阅读 · 0 评论 -
FFmpeg5.0源码阅读—— avcodec_send_frame && avcodec_receive_packet
本文主要描述了FFmpeg中用于编码的接口的具体调用流程,详细描述了该接口被调用时所作的具体工作。原创 2023-07-23 21:34:32 · 940 阅读 · 0 评论 -
FFmpeg5.0源码阅读—— avcodec_send_packet&&avcodec_receive_frame
本文主要描述了FFmpeg中用于解码的接口的具体调用流程,详细描述了该接口被调用时所作的具体工作。原创 2023-07-09 21:43:02 · 1297 阅读 · 0 评论 -
FFmpeg5.0源码阅读—— av_read_frame
本文主要描述了FFmpeg中用于打开编解码器接口。原创 2023-07-08 21:12:50 · 1194 阅读 · 0 评论 -
FFmpeg5.0源码阅读—— avcodec_open2
本文主要描述了FFmpeg中用于打开编解码器接口。原创 2023-07-02 22:40:38 · 1461 阅读 · 0 评论 -
FFmpeg5.0源码阅读——avformat_find_stream_info
在使用FFmpeg库时通常使用。原创 2023-06-24 19:23:59 · 1017 阅读 · 0 评论 -
FFmpeg5.0源码阅读——avformat_open_input
本文主要描述了FFmpeg中用于打开文件接口。原创 2023-06-24 17:21:42 · 1381 阅读 · 0 评论 -
FFmpeg5.0源码阅读——mov文件格式解析
之前在[Mp4格式详解](https://blog.csdn.net/GrayOnDream/article/details/127815260)中详细描述了Mp4文件格式的具体布局方式。为了更加深入理解mp4文件格式,本文记录了ffmpeg中解封装mp4文件的基本实现。原创 2023-05-28 22:39:01 · 1968 阅读 · 0 评论 -
FFmpeg5.0源码阅读——AVPacket
AVPacket是FFmpeg中存储压缩数据的结构体,一般从媒体文件中解封装出来的数据或者编码器编码得到的压缩数据都存储在AVPacket中,且一个AVPacket只存储一帧压缩的视频数据或者一段压缩的音频数据。AVPacket的数据通常是通过管理的因此申请释放要是用对应的API。另外,并不是abi稳定的,如果有新增的字段会在结构体定义的尾部添加,因此在使用时三思。//管理data域的AVBufferRef(引用计数),如果为NULL,表明数据并不是通过引用计数管理的 int64_t pts;原创 2023-02-15 23:22:15 · 687 阅读 · 0 评论 -
FFmpeg5.0源码阅读——AVFrame
FFmpeg中解码的裸数据都是通过AVFrame存储的,因此理解AVFrame的具体实现对于使用FFmpeg有比较大的帮助。AVFrame是一个复合的结构体,他可以存储音频数据或者视频数据。但是因为音频和视频数据的参数不兼容比如宽高和采样率等,AVFrame中会保留两者参数的定义,以至于结构体略显臃肿(同时包含了音频和视频的参数定义)。FFmpeg解码一个视频时,会先通过解封装器对视频解封装得到编码的流数据AVPacket,再将该流数据送给解码器进行解码,解码出来的裸数据就会存储在AVFrame中返回。原创 2023-02-14 23:27:05 · 1112 阅读 · 0 评论 -
封装格式之MP4
MP4文件格式即ISO/IEC 14496-14:2003,是冲QuickTime文件格式发展而来,是ISO/IEC 14496-12:2004(ISO Base Media File format)的一个具体实例。MP4的实现有两个版本:第一个版本是ISO/IEC 14496-1:2001(MPEG-4 Part 1 (Systems), First edition),发布于2001年;原创 2022-11-12 00:02:05 · 1914 阅读 · 0 评论 -
GIF图像格式简介(87a和89a)(C语言生成GIF图像)
1 GIF图简介 GIF(Graphics Interchange Format)图像格式是Compuserve与1987年开发的一种图像文件格式。该图像本身可以存储静态图和动态图,但如今该图像主要被用来存储动态图,且在大部分系统上都支持。但是相对于webp这些新式的动态图格式,其在颜色质量和压缩率上的表现相对不如人意。 该图像表达图像和一般的图像直接存储图像内容不同,而是通过一个颜色表映射来表达对应的图像的内容。也就是说图像中存在一张颜色表存储图像中出现的颜色,然后每一帧的图像通过颜色索引来表示颜原创 2022-02-27 18:34:45 · 9247 阅读 · 0 评论 -
数字音频数据
1 声音 我们听到的声音是一种波,俗称声波。声波通常是由物体振动激励周围的空气振动,而带动其周围的空气质点振动不断向外传递能量的现象。波分为纵波和横波,纵波表示质点的振动方向和传播方向相同,横波表示质点的振动方向和传播方向垂直。而空气和液体中的声波只能是纵波,固体中一般既有横波又有纵波。 波的特性由波函数描述,其中比较重要的三个参数为频率、振幅和相位。声波当然不例外,振幅代表着我们听到的声波的音量的大小,而频率代表着音的高低(比如刺耳的声音通常频率高),而相位代表波相对于正弦波或者余弦波在时间上的偏原创 2022-03-13 00:17:26 · 3747 阅读 · 1 评论 -
FFmpeg之ffplay源码简要分析
1 ffplay 基本架构1.1 视频解码播放的基本流程 ffmpeg视频解码播放的基本流程如下图所示:首先对网络媒体数据流进行解封装得到一般的视频封装格式比如MP4等,如果是本地播放的媒体文件就不需要解协议;然后对视频媒体文件进行解封装,得到未经过解码的视频、音频或者字幕流数据,在ffmpeg中得到的是AVPacket;然后分别对字幕、音频和视频数据进行解码,分别得到字幕、PCM数据和YUV数据;由于不同数据体积不同解码速度不同,视频解码相对比较慢,如果解码完就立马播放就会出现音频和视频播原创 2022-01-03 20:38:28 · 2449 阅读 · 2 评论 -
FFmpeg解封装、解码音频和视频(分别使用OpenGL和OpenAL播放)
1 ffmpeg解码大致流程 下图是ffmpeg解码播放音视频的基本流程:首先是网络媒体解协议,解协议之后得到对应的媒体文件比如mp4,ts等,这些格式是媒体文件的封装格式,也就是将音频,视频,字幕等码流编码后打包到一起的格式;之后就是对容器进行解封装,解封装能够分别得到对应的流的编码流,比如视频可能是h264码流,音频可能是aac码流,这些都是对应的流经过编码后的数据;再然后就是需要将编码的流解码为裸流,视频的裸流一般为YUV或者RGB数据,而音频的裸流一般为PCM数据,这些数据也是播放时时真原创 2021-12-26 18:02:48 · 3723 阅读 · 0 评论 -
音视频基础之YUV格式
1 YUV格式1.1 YUV简介 YUV是一种颜色编码方式,类似于RGB颜色编码方式。YUV将亮度和色度分离,使用Y(明亮度)、U和V(色度、浓度)三个分量表示一个颜色。三个分量中UV分量只有颜色信息,如果图像只有Y分量图像就是黑白图像。一般见到YPbPr、YUV、Y’UV、YCbCr等专有名词描述的都可以成为YUV,不同的是他们使用的具体场景不同(YUV和Y’UV通常用来编码电视的模拟信号、YCbCr用来描述数字影像),在开发的过程中不需要严格区分他们。 YUV利用人对图像的亮度信息更加敏感的特原创 2021-12-16 00:53:13 · 4178 阅读 · 0 评论