1.编码整体流程

雷神博客--编码

上图已经完整的说明了编码的流程,这里我们来具体说一下:

  • av_register_all()
    • 注册编解码器
    • 注册复用器
    • 注册解复用器
    • 注册协议处理器

    基本上这个函数永远是的第一个被调用的,只有调用了这个函数才能完成各种初始化,我们才能够使用编码/解码器,才能够使用复用/解复用器

  • avformat_alloc_output_context2()

    这是第二优先调用的函数,该函数可以帮助我们创建一个用于输出的AVFormatContext结构体

  • avio_open2()

    该函数用于打开FFmpeg的输入输出文件

  • avformat_new_stream()
  • avcodec_find_encoder()

    avcodec_find_encoder()和avcodec_find_decoder()。avcodec_find_encoder()用于查找FFmpeg的编码器,avcodec_find_decoder()用于查找FFmpeg的解码器。

  • avcodec_open2()

    该函数用于初始化一个视音频编解码器的AVCodecContext

  • avformat_write_header

    avformat_write_header(),av_write_frame()以及av_write_trailer()。其中av_write_frame()用于写视频数据,avformat_write_header()用于写视频文件头,而av_write_trailer()用于写视频文件尾

  • avcodec_encode_video2()

    该函数用于编码一帧视频数据

  • av_write_frame()

    av_write_frame()用于输出一帧视音频数据

  • av_write_trailer()

    av_write_trailer()用于输出文件尾

  • avcodec_close()
  • avformat_free_context()
  • avio_close()

results matching ""

    No results matching ""