您现在的位置:首页 > >

ffmpeg读取摄像头数据 avcodec_send_packet return -1094995529

发布时间:

ffmpeg读取摄像头数据只需要把avformat_open_input的第二个参数设置为摄像头设备的名字即可,开发环境是Qt,在debug模式下,以切正常,但是发布release的时候,执行完av_read_frame还是能看到packet数据的,但是执行avcodec_send_packet / avcodec_receive_frame的时候avcodec_send_packet返回失败,错误码-1094995529,然后就程序直接返回失败了,查看文档发现这个错误码是invalid data的意思,没道理debug模式下成功,release模式下失败,ffmpeg的库是统一的,没有根据debug/release区分,琢磨的半天,尝试了一下avcodec_send_packet返回失败的时候不直接return,滤过了几十帧之后,居然读到正确数据了。具体原因不明,记录下来以便以后查阅


release模式下,关闭后开启摄像头会很卡,一步步尝试,发现avformat_open_input的第四个参数AVDictionary**重新初始化一遍会快很多


慢慢排查发现,debug版本的程序没有被360拦截,release版本的读取摄像头都时候每次都会被拦截,360提示的时候选择允许,并且勾选不再提示,效果就像debug版本一样了。


据传release版本的ffmpeg下出的问题,可以通过设置引用方式改变



本人使用的是qt的项目,所以要再pro文件中设置



QMAKE_LFLAGS += /OPT:NOREF



但是设置了360不拦截之后不出问题了,也就没有尝试设置引用优化


热文推荐
猜你喜欢
友情链接: 大学学习资料 人文社科 经营营销资料 工程资料大全 IT文档 自然科学