FFMpeg音频重采样和视频格式转

一.视频像素和尺寸转换函数

  1.sws_getContext : 像素格式上下文  --------------->多副图像(多路视频)进行转换同时显示

  2.struct SwsContext  *sws_getCachedContext(struct SwsContext *context , int srcW , int srcH

            enum  AVPixelFormat srcFormat , int dstW , int dstH , enum AVPixelFormat

            dstFormat , int flags , SwsFilter *srcFilter , SwsFilter *dstFilter , const

            double  *param) ------------>一副图像(视频)进行转化用此接口

    flag :  是选择不同的算法---->针对与尺寸的变换

    param : 是和flag一同使用的

  3. sws_scale(struct SwsContext *c , const uint8_t *const srcSile[] , const int srcStride[] , int srcSliceY , int srcSliceH , uint8_t *const dst[] , const int dstStride[]) : 每一帧数据的转换

  4. sws_freeContext(struct SwsContext *swsContext) : 释放内存

二.音频重采样 

  1.SwrContext  *swr_alloc(void) : 创建上下文

  2.SwrContext  *swr_alloc_set_opts(struct SwrContext *s , int64_t out_ch_layout ,                                                             AVSampleFormat  out_sample_fmt , int out_sample_rate ,

         int64_t  in_ch_layout , AVSampleFormat  in_sample_fmt ,

         int  in_sample_rate , int  log_offset =0, void *log_ctx=0)  : 设置上下文

   out_ch_layout : 输出的layout(5.1声道或者是立体声道)

   out_sample_fmt : 输出的样本格式(16bit)

  3. int  swr_init(struct SwrContext  *s) : 初始化上下文

  4.void swr_free(struct SwrContext **s) : 释放空间

  5.swr_convert (struct SwrContext *s , uint8_t **out , int out_count ,

          const  uint8_t  **in  ,  int  in_count) : 一帧一帧去转换

   out_count : nb_sample------>单通道样本的数量

三.GLSurfaceView

  1.getHolder().getSurface() 

  2.SurfaceHolder.Callback

    (1).surfaceCreated() : surface的创建

    (2).surfaceChanged() : surface的改变

    (3).surfaceDestoryed : surface的销毁

  

  

  

猜你喜欢

转载自www.cnblogs.com/liunx1109/p/9275641.html