音视频学习二: android平台下ffmpeg编解码简记-编解码

               编解码1.主要函数avcodec_register_all(); 注册所有解码器 AVCodec *avcodec_find_decoder(enum AVCodecID id); 软件码:根据解码器id找到解码器 AVCodec *avcodec_find_decoder_by_name(const char *name); 硬解码:根据解码器名称找到解...
摘要由CSDN通过智能技术生成

               编解码

1.主要函数

  • avcodec_register_all(); 注册所有解码器
  • AVCodec *avcodec_find_decoder(enum AVCodecID id); 软件码:根据解码器id找到解码器
  • AVCodec *avcodec_find_decoder_by_name(const char *name); 硬解码:根据解码器名称找到解码器
  • AVCodecContext *avcodec_alloc_context3(const AVCodec *codec) 申请AVCodecContext空间.需要传递一个编码器,也可以不传,但不会包含编码器
  • void avcodec_free_context(AVCodecContext **avctx); 清理释放AVCodecContext空间
  • int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options); 打开视频解码器。如果在 avcode_alloc_context3 的时候没有传解码器,则在此需要进行传递,后面的options是可选参数。参见:libavcodec/options_table.h。
  • avcodec_parameters_to_context(codec,p); 该函数用于将流里面的参数,也就是AVStream里面的参数直接复制到AVCodecContext的上下文中。

 

2.结构体

  • AVCodecContext 

位于avcodec.h,关键的变量(这里只考虑解码)

enum AVMediaType codec_type:编解码器的类型(视频,音频...)

struct AVCodec  *codec:采用的解码器AVCodec(H.264,MPEG2...)

int bit_rate:平均比特率

uint8_t *extradata; int extradata_size:针对特定编码器包含的附加信息(例如对于H.264解码器来说,存储SPS,PPS等)

AVRational time_base:根据该参数,可以把PTS转化为实际的时间(单位为秒s)

int width, height:如果是视频的话,代表宽和高

int refs:运动估计参考帧的个数(H.264的话会有多帧,MPEG2这类的一般就没有了)

int sample_rate:采样率(音频)

int channels:声道数(音频)

enum AVSampleFormat sample_fmt:采样格式

int profile:型(H.264里面就有,其他编码标准应该也有)

int level:级(和profile差不太多)

在这里需要注意&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值