`
wiseideal
  • 浏览: 449142 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

AVPacket与AVFrame的关系

 
阅读更多

最近在做ffmpeg相关的项目,满眼的AVPacket和AVFrame,一下就眼晕了天真。Frame还好理解,但是这里packet到底什么样的包,和Frame又是什么关系呢。

参考网上的介绍

http://blog.csdn.net/ym012/article/details/6540065 写道
从int av_read_frame(AVFormatContext *s, AVPacket *pkt)函数看,从数据流读出的数据首先是保存在AVPacket里,也可以理解为一个AVPacket最多只包含一个AVFrame,而一个AVFrame可能包含好几个AVPacket,AVPacket是种数据流分包的概念。记录一些音视频相关的属性值,如pts,dts等

 

一桢的数据保存在frame里这没什么问题,packet实际是这一桢中的分包。因为packet中还包含pts/dts,可以理解为对一桢的细分.

http://blog.csdn.net/alentam/article/details/2490716 写道
DTS时间戳决定了解码器在SCR时间等于DTS时间时进行解码,PTS时间戳也是类似的。通常,DTS/PTS时间戳指示的是晚于音视频包中的SCR的一个时间。例如,如果一个视频数据包的SCR是100ms(意味着此包是播放100ms以后从磁盘中读取的),那么DTS/PTS值就差不多是200/280ms,表明当SCR到200ms时这个视频数据应该被解码并在80ms以后被显示出来(视频数据在一个buffer中一直保存到开始解码)

 

分享到:
评论

相关推荐

    ffmpeg内存模型AVPacket API和AVFrame API

    本篇文章将详细探讨FFmpeg中的两个核心API:AVPacket和AVFrame,以及它们在内存管理中的作用。 AVPacket API是FFmpeg用来传输和存储解码后的音视频帧数据的结构。每个AVPacket对象包含了一个或多个数据缓冲区...

    ffmpeg基础库编程开发

    4. AVPacket 与 AVFrame:对于编码器或者解码器的输入输出部分,也就是压缩数据以及原始数据的抽象就是AVPacket与AVFrame。 5. AVFilter:除了编解码之外,对音视频的处理肯定是针对于原始数据的处理,也就是针对...

    C++队列缓存AVpacket.zip

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了...

    ffmpeg avframe to jpeg

    5. **清理资源**:最后,释放所有分配的资源,包括编码器上下文、`AVFrame`以及`AVPacket`。 ```c avcodec_free_context(&c); av_frame_free(&avframe); av_packet_free(&pkt); ``` 这就是使用FFmpeg将`avframe`...

    ffmpeg视频解码demo

    FFmpeg的解码流程主要包括打开输入文件、读取AVPacket、解码AVPacket到AVFrame、处理AVFrame并显示。首先,使用`avformat_open_input`打开视频文件,接着`avformat_find_stream_info`获取流信息。然后,通过`av_...

    ffplay+qt播放器

    在Windows环境使用QT Creator 4.4.1编译ffplay(Ffmpeg3.3.3版本): (1)去掉了参数的解析,目前只支持内部写死文件路径...(3)在QT编译ffplay的目的是为了方便debug,以方便观察AVPacket、AVFrame等结构体的变量。

    z使用FFMPEG编码的FileStreamEncoder1.1源代码

    3. **AVPacket 和 AVFrame**: AVPacket 用于存储编码后的数据,而 AVFrame 代表原始的音视频帧。在编码过程中,`FileStreamEncoder` 首先会将原始数据填充到 AVFrame 中,然后调用 `avcodec_encode_video2` 或 `...

    An ffmpeg and SDL Tutorial 源码

    3. **解码视频帧**:从`tutorial02.c`开始,可能会讲解如何从AVPacket中解码出AVFrame,然后可能介绍了如何使用libavcodec中的`avcodec_decode_video2()`或`avcodec_send_packet()`和`avcodec_receive_frame()`接口...

    06-02-FFmpeg内存模型1

    本节主要关注FFmpeg的内存模型,特别是与`AVPacket`和`AVFrame`相关的内存管理。 首先,`AVPacket`和`AVFrame`是FFmpeg中用于传输和存储音视频数据的基本结构。`AVPacket`通常用来承载解封装后的音视频数据块,而`...

    ffmpeg-MediaPlayer.zip

    - **AVPacket与AVFrame**:AVPacket存储待解码的原始数据,AVFrame则保存解码后的图像帧。 3. **容器格式处理** - **libavformat**:处理不同视频文件格式,如MP4、FLV、M3U8等。它负责读取容器中的流信息,解析...

    音频解码实战1

    `avcodec_send_packet`负责将包含原始压缩数据的AVPacket传递给解码器,而`avcodec_receive_frame`则用于接收解码后的AVFrame,该AVFrame包含了未压缩的音频样本。 5. **建议的使用流程**: - 设置并打开...

    Simplest FFmpeg Memory Player.zip

    4. **AVPacket 和 AVFrame**:`AVPacket` 用来封装一帧或多帧编码后的数据,而 `AVFrame` 用于存储解码后的原始像素数据。在内存播放器中,会用 `av_read_frame` 函数从 `AVFormatContext` 中读取 `AVPacket`,然后...

    以FFmpeg为基础的音视频同步代码(linux)

    2. **AVPacket与AVFrame**:`AVPacket`用于存储从解码器输出的原始数据,包括音视频帧的时间戳信息;而`AVFrame`则包含解码后的像素或样本数据,用于实际的播放操作。 3. **解码器(Decoders)**:FFmpeg提供了多种...

    FFmpeg解码端代码及语义分析.rar

    在“ffmpeg解码端代码及语义分析.pdf”中,可能会详细分析上述步骤中的关键函数和结构体,如AVPacket、AVFrame、AVCodecContext等。它会解释这些核心组件的用途,以及它们如何协同工作来完成解码任务。 例如,`...

    ffmpeg examples

    示例代码可能会讲解如何使用AVPacket、AVFrame的时间戳信息来确保播放的连贯性。 8. 错误处理和调试:良好的代码应该能够优雅地处理错误并提供有用的日志信息。示例代码可能会展示如何设置错误处理回调和输出调试...

    Objective-C使用ffmpeg.zip

    在Objective-C代码中,你需要导入ffmpeg的头文件,然后创建相关的对象实例,如AVFormatContext、AVPacket、AVFrame等,以处理媒体流。使用ffmpeg的libavformat模块解析媒体文件,找到音视频流;接着,利用libavcodec...

    07-FFmpeg decode.rar

    这涉及到理解FFmpeg的数据流处理,包括AVPacket和AVFrame结构,以及如何配置解码上下文(AVCodecContext)。 接下来是"07-06-decode_video",这个例子关注视频解码。视频解码涉及到解析容器格式,提取视频流,然后...

    qt ffmpeg 视频文件

    在FFmpeg中,我们需要使用AVFormatContext、AVPacket、AVFrame等结构体来处理输入的视频流。解码过程通常涉及读取流中的数据包(AVPacket),将其解码为图像帧(AVFrame),并准备供显示。 实现步骤: 1. **初始化...

    muxmp4.zip

    6. **AVPacket和AVFrame**:在FFmpeg中,`AVPacket`和`AVFrame`是处理音视频数据的基本结构。`AVPacket`用于承载编码后的数据,而`AVFrame`则代表一个完整的视频或音频帧。 7. **时间戳同步**:在合成就过程中,...

    音视频 ffmpeg 简单的播放器

    - 在播放结束后,记得释放所有分配的资源,如解码器上下文、AVPacket、AVFrame 等,调用 `av_free()`、`avcodec_close()` 和 `avformat_close_input()`。 10. **错误处理**: - 在开发过程中,确保对可能出现的...

Global site tag (gtag.js) - Google Analytics