温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

FFmpeg avcodec_send_packet函数说明

发布时间:2020-06-21 20:08:50 来源:网络 阅读:18226 作者:fengyuzaitu 栏目:编程语言

int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt);
/*
brief:支持将裸流数据输出给×××
在函数内部,会拷贝相关的AVCodecContext结构变量,将这些结构变量应用到解码的每一个包。例如
AVCodecContext.skip_frame参数通知×××扔掉包含该帧的包
@warning 输入的avpkt-data缓冲区必须大于AV_INPUT_PADDING_SIZE,因为优化的字节流读取器必须一次读取32或者64比特的数据
@warning 不能跟之前的API(例如avcodec_decode_video2)混用,否则会返回不可预知的错误
@note 在将包发送给×××的时候,AVCodecContext必须已经通过avcodec_open2打开
@参数 avctx 解码上下文
@参数[输入]avpkt 输入AVPakcet.通常情况下,输入数据是一个单一的视频帧或者几个完整的音频帧。调用者保留包的原有属性,×××不会修改包的内容。×××可能创建对包的引用。如果包没有引用计数将拷贝一份。跟以往的API不一样,包必须完整的解码出来,如果包含有多个帧,要求多次调用avcodec_recvive_frame,在重新调用该接口之前。输入参数可以为NULL,或者AVPacket的data域设置为NULL或者size域设置为0,表示将刷新所有的包,意味着数据流已经结束了。第一次发送刷新会总会成功,第二次发送刷新包是没有必要的,并且返回AVERROR_EOF,如果×××缓存了一些帧,返回一个刷新包,将会返回所有的解码包

@返回值 0 表示成功,其他的异常值说明:
AVERROR(EAGAIN):当前不接受输出,必须重新发送
AVERROR_EOF:已经刷新×××,没有新的包可以被刷新
AVERROR(EINVAL):没有打开×××,或者这是一个编码器,或者要求刷新
AVERRO(ENOMEN):无法添加包到内部队列

*/

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI