美文网首页
音视频开发之-FFmpeg函数和结构体总结

音视频开发之-FFmpeg函数和结构体总结

作者: DD_Dog | 来源:发表于2019-11-20 10:53 被阅读0次

    AVFormatContext

    AVFormatContext 在FFmpeg中有很重要的作用,描述一个多媒体文件的构成及其基本信息,存放了视频编解码过程中的大部分信息。通常该结构体由avformat_open_input分配存储空间,在最后调用avformat_input_close关闭

    AVStream

    AVStream 描述一个媒体流,在解码的过程中,作为AVFormatContext的一个字段存在,不需要单独的处理。

    AVpacket

    AVpacket 用来存放解码之前的数据,它只是一个容器,其data成员指向实际的数据缓冲区,在解码的过程中可有av_read_frame创建和填充AVPacket中的数据缓冲区,当数据缓冲区不再使用的时候可以调用av_free_apcket释放这块缓冲区。

    AVFrame

    AVFrame存放从AVPacket中解码出来的原始数据,其必须通过av_frame_alloc来创建,通过av_frame_free来释放。和AVPacket类似,AVFrame中也有一块数据缓存空间,在调用av_frame_alloc的时候并不会为这块缓存区域分配空间,需要使用其他的方法。

    swr_alloc_set_opts

    重采样函数

    SwrContext *swr_alloc(void);    // 分配重采样的上下文。
    
    SwrContext *swr_alloc_set_opts(struct SwrContext *s,   //参数1:重采样上下文
                      int64_t out_ch_layout,   //参数2:输出的layout, 如:5.1声道…
                      AVSampleFormat out_sample_fmt,  //参数3:输出的样本格式。Float, S16, S24
                      int out_sample_rate,   //参数4:输出的样本率。可以不变
                      int64_t in_ch_layout,  //参数5:输入的layout
                      AVSampleFormat in_sample_fmt,  //参数6:输入的样本格式。
                      int in_sample_rate,   //参数7:输入的样本率
                      int log_offset, void *log_ctx //参数8,参数9,日志,不用管,可直接传0
    );
    //针对音频的播放速度,可以通过样本率的改变而改变。
    
    int swr_init(struct SwrContext *s);                       // 初始化上下文
    void swr_free(struct SwrContext **s);                  // 释放上下文空间
    

    avformat_open_input

    参数说明:

    • AVFormatContext *ps, 格式化的上下文。要注意,如果传入的是一个AVFormatContext的指针,则该空间须自己手动清理,若传入的指针为空,则FFmpeg会内部自己创建。
    • const char *url, 传入的地址。支持http,RTSP,以及普通的本地文件。地址最终会存入到AVFormatContext结构体当中。
    • AVInputFormat *fmt, 指定输入的封装格式。一般传NULL,由FFmpeg自行探测。
    • AVDictionary **options, 其它参数设置。它是一个字典,用于参数传递,不传则写NULL。

    参考

    ffmpeg 源代码简单分析

    相关文章

      网友评论

          本文标题:音视频开发之-FFmpeg函数和结构体总结

          本文链接:https://www.haomeiwen.com/subject/riznictx.html