zoukankan      html  css  js  c++  java
  • FFmpeg 解封装

    涉及到的函数:

    void av_register_all(void):

    1)初始化libavformat并且注册所有的封装器和解封装器跟协议。

    2)如果没有调用该函数,你可以选择你想要支持的格式。 @see av_register_input_format()   @see av_register_output_format()

    int avformat_network_init(void):

    1)初始化全局的网络库。它是可选的,并且不再推荐使用。

    2)该函数仅用于处理关于一些旧版的GnuTLS 或 OpenSSl库的线程安全问题。

    3)该如果libavformat是链接到新版本的库,或者使用者不想用它,这个函数可以不用调用。

    4)否则的话,你需要再任何使用它的线程启动之前调用该函数。

    int avformat_open_input(AVFormatContext **ps, const char *url, ff_const59 AVInputFormat *fmt, AVDictionary **options):

    1)该函数打开一个输入流,并且读取头部信息。此时解码器没有打开。使用完后,必须使用avformat_close_input进行关闭。

    2)@param ps  该参数指向一个用户提供的AVFormatContext的指针(由avformat_alloc_context分配),也可以是一个空指针NULL,此时该函数会自动申请控件,并给该指针赋值。

    3)@param url  要打开的流的URL地址。

    4)@param fmt  如果非空,该参数会强制使用特定的输入格式;为空,则自动检测输入格式。

    5)@param Aoptions  一个包含AVFormatContext和demuxer-private选项的字典。在返回时,这个参数将被销毁并替换为一个包含未找到选项的dict。可能是NULL。

    5)@return 成功返回 0    否则返回错误码

    int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options):

    1)读取媒体文件的数据包,以获得流信息。  这对于那些没有头部信息的文件格式(如MPEG),可以使用该函数来获取流信息。

    2)@param ic 媒体文件句柄

    3)@param options 如果非空,一个指向字典的ic.nb_streams长数组指针,其中第i个成员包含对应于第i个流的编解码器选项。返回时,每个字典将填充未找到的选项。

    4)@return >=0 if OK, AVERROR_xxx on error

    int av_find_best_stream(AVFormatContext *ic,
                enum AVMediaType type,
                int wanted_stream_nb,
                int related_stream,
                AVCodec **decoder_ret,
                int flags);

    1)找到"最佳"流。"最佳"流是根据各种试探法确定的,最可能是用户期望的。

    2)

    3)@param ic  媒体文件句柄

    4)@param type  流类型: video, audio, subtitles, etc.

    5)@param wanted_stream_nb  用户请求的流编号,或-1表示自动选择

    6)@param related_stream  试着找一个相关的流(例如。在同一个程序中),如果没有为 -1

    7)@param decoder_ret  如果非空,则返回所选流的解码器

    8)@param flags  当前未定义

    9)@return 成功:返回一个非负的流编号      AVERROR_STREAM_NOT_FOUND:需要类型的流没有被找到,则返回该数值    AVERROR_DECODER_NOT_FOUND:找到流,但没有发现解码器,返回该数值

    10)@note 如果该函数成功返回,并且decoder_ret 不为空,则decoder_ret将被确保设置成有效的AVCodec

  • 相关阅读:
    uni-app开发的应用(小程序,app,web等),使用Node+Koa2开发的后端程序接收上传文件的方法
    ES6学习笔记之数组的扩展
    ES6学习笔记之字符串的扩展
    UnhandledPromiseRejectionWarning: SequelizeConnectionError: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    java之内存分布图
    java的构造方法
    java的局部变量和成员变量以及区别
    java类型转换详解(自动转换和强制转换)
    webpack入门宝典
    js函数之四大调用模式
  • 原文地址:https://www.cnblogs.com/helloc14/p/12470065.html
Copyright © 2011-2022 走看看