ffmpeg中的时间

本文详细介绍了FFmpeg中多个时间基的作用,包括AVStream和AVCodecContext的时间基,以及PTS和DTS在不同结构体中的表示方式。重点讲解了PTS和DTS如何与time_base关联,并阐述了在不同time_base之间的转换方法,如av_rescale_q函数的应用。
摘要由CSDN通过智能技术生成

一、

首先FFmpeg中存在多个时间基(time_base),对应不同的阶段(结构体),每个time_base具体的值不一样,ffmpeg提供函数在各个time_base中进行切换。搞清楚各个time_base的来源,对于阅读ffmpeg的代码很重要。
1、AVstream中(libavformat/avformat.h)

typedef struct AVFormatContext {
   
    struct AVInputFormat *iformat;//输入数据的封装格式
    unsigned int nb_streams;//视音频流的个数
    AVStream **streams;//视音频流
    char filename[1024];//文件名
    int64_t duration//时长(单位:微秒us,转换为秒需要除以1000000)
    int bit_rate//比特率(单位bps,转换为kbps需要除以1000)
    AVDictionary *metadata//元数据
    int64_t start_time;//开始的时间
    ......
    }
typedef struct AVCodecContext {
   

    enum AVMediaType codec_type;//编解码器的类型(视频,音频...)
    struct AVCodec  *codec;//采用的解码器AVCodec(H.264,MPEG2...)
    int bit_rate;//平均比特率
    uint8_t *extradata;//针对特定编码器包含的附加信息(例如对于H.264解码器来说,存储sps,pps等)                        
    AVRational time_base;//根据该参数,可以把PTS转化为实际的时间(单位为秒s)
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值