zoukankan      html  css  js  c++  java
  • FFMpeg 中的数据结构

    FFMpeg 中比较重要的函数以及数据结构如下:

    1. 数据结构:
      (1) AVFormatContext
      (2) AVOutputFormat
      (3) AVInputFormat
      (4) AVCodecContext
      (5) AVCodec
      (6) AVFrame
      (7) AVPacket
      (8) AVPicture
      (9) AVStream
    2. 初始化函数:
      (1) av_register_all()
      (2) avcodec_open()
      (3) avcodec_close()
      (4) av_open_input_file()
      (5) av_find_input_format()
      (6) av_find_stream_info()
      (7) av_close_input_file()
    3. 音视频编解码函数:
      (1) avcodec_find_decoder()
      (2) avcodec_alloc_frame()
      (3) avpicture_get_size()
      (4) avpicture_fill()
      (5) img_convert()
      (6) avcodec_alloc_context()
      (7) avcodec_decode_video()
      (8) av_free_packet()
      (9) av_free()
    4. 文件操作:
      (1) avnew_steam()
      (2) av_read_frame()
      (3) av_write_frame()
      (4) dump_format()
    5. 其他函数:
      (1) avpicture_deinterlace()
      (2) ImgReSampleContext()

    AVFormatContext

    一般在使用 ffmpeg sdk 的代码中 AVFormatContext 是一个贯穿始终的数据结构,很多函数都要用到它 作为参数。FFmpeg 代码中对这个数据结构的注释是:format I/O context 。
    此结构包含了一个视频流的格式内容。其中存有了 AVInputFormat(or AVOutputFormat 同一时间 AVFormatContext 内只能存在其中一个),和 AVStream、AVPacket 这几个重要的数据结构以及一些其他的 相关信息,比如 title,author,copyright 等。还有一些可能在编解码中会用到的信息,诸如:duration, file_size, bit_rate 等。参考 avformat.h 头文件。
    Useage: 声明:
    AVFormatContext *oc; (1)
    初始化:
    由于 AVFormatConext 结构包含许多信息因此初始化过程是分步完成,而且有些变量如果没 有值可用,也可不初始化。但是由于一般声明都是用指针因此一个分配内存过程不可少:

    oc = av_alloc_format_context(); (2)

    结构中的 AVInputFormat(或 AVOutputFormat)是一定要初始化的,基本上这是编译码要使用什么 codec 的依据所在:
    oc->oformat = fmt; or oc->iformat = fmt; (3)

    其中 AVOutputFormat* fmt 或 AVInputFormat* fmt。(AVInputFormat and AVOutputFormat 的初始化在后 面介绍。随后在参考代码 output_example.c 中有一行:

    snprintf(oc->filename, sizeof(oc->filename), “%s”, filename); (4)

    还不是十分清楚有什么作用,估计是先要在输出文件中写一些头信息。

  • 相关阅读:
    回调函数案例(二)
    回调函数案例(一)
    liteos学习文档liteos.github.io
    HeapAlloc、GlobalAlloc和new等内存分配有什么区别么?
    C语言中字符数组和字符串指针分析
    socket 连接,使得地址马上可以重用
    shutdown 和closesocket
    IP地址转换成Long型数字的算法
    WSAStartup( )
    关于完成端口IOCP异步接收连接函数AcceptEx注意事项
  • 原文地址:https://www.cnblogs.com/schips/p/12201740.html
Copyright © 2011-2022 走看看