ffmpeg编程基础:视频解码、音频播放

        我总结了FFmpeg的一些基础知识:

(1)FFmpeg中的八个库:

              

(2)视频解码的流程图:

           (代码参考雷宵骅老师博客  http://blog.csdn.net/leixiaohua1020/article/details/38868499)

              

各个函数的功能如下:

     av_register_all():注册所有的组件

     avformat_open_input():打开输入码流

     avformat_find_stream_info():查找码流信息

     avcodec_find_decoder():查找解码器

     avcodec_open2():打开编解码器

     av_read_frame():读取一帧数据

    avcodec_decode_video2():解码一帧数据 (是最主要的方法)

在解码中,结构体如下:

                  

AVFormatContext:分装格式上下文结构体,包含视频最外层信息,专门处理封装格式。

    包含的结构体变量有:

        iformat:输入视频的AVInputFormat
        nb_streams:输入视频的AVStream个数
        streams:输入视频的AVStream []数组
        duration:输入视频的时长
        bit_rate:输入视频的码率

AVInputFormat:指明文件用哪种封装格式。

    包含的结构体变量有:

        name:封装格式名字
        long_name:封装格式的长名称
        extensions:封装格式的扩展名
        id:封装格式的ID
        一些封装格式处理的接口函数

AVStream[ ] :指明是哪一种视频流或者音频流,一般情况下,0代表的是视频流,1代表的是音频流。

    包含的结构体变量有:

        id:序号
        codec:该流对应的AVCodecContext
        time_base:该流的时基
        r_frame_rate:该流的帧率

AVCodecContext:编解码上下文结构体,保存视音频编解码的相关信息,专门处理编解码。

    包含的结构体变量有:

         codec:编解码器的AVCodec
         width,height:图像的宽高
         pix_fmt:像素格式
         sample_rate:采样率
         channels:声道数
         sample_fmt:采样格式

AVCodec:指明编码器

    包含的结构体变量有:

          name:编解码器名称
          long_name:编解码器长名称
          type:编解码器类型
          id:编解码器ID
          一些编解码的接口函数

(3)音频播放流程

                  
          视频播放同音频播放大致相同,只有解码方法不相同。
         avcodec_decode_audio4():解码一帧音频数据

(4)SDL显示流程

            (代码参考雷宵骅老师博客  http://blog.csdn.net/leixiaohua1020/article/details/38868499

                           

各个函数的功能如下:

           SDL_INIT():初始化SDL
       SDL_CreatWindow():创建显示窗口
       SDL_CreatRenderer():创建渲染器
       SDL_CreatTexture():创建纹理
       SDL_UpdateTexture():更新纹理
       SDL_RenderCopy():把数据给渲染器
       SDL_RenderPresent():渲染器把数据渲染出来
SDL结构:
                 
SDL-Texture:一个Texture对应一个YUV Data
SDL-Rect:一个矩形结构,确定一个像素所要画的位置。用于确定位置。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值