查看所有的函数引用
1)static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl, const H2645NAL *nal)

if (!h->ps.pps_list[sl->pps_id]) {
        av_log(h->avctx, AV_LOG_ERROR,
               "non-existing PPS %u referenced\n",
               sl->pps_id);
        return AVERROR_INVALIDDATA;
    }
2)static inline int parse_nal_units(AVCodecParserContext *s, AVCodecContext *avctx, const uint8_t * const buf, int buf_size)

if (!p->ps.pps_list[pps_id]) {
                av_log(avctx, AV_LOG_ERROR,
                       "non-existing PPS %u referenced\n", pps_id);
                goto fail;
            }

avcodec_send_packet函数返回-1094995529错误,根据FFmpeg的错误信息,得知为AVERROR_INVALIDDATA,猜测是第一种情况
在调用h264_slice_header_parse函数的时候,出现了错误,无法定位PPS

函数的调用逻辑
static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size)
    int ff_h264_queue_decode_slice(H264Context *h, const H2645NAL *nal)
        static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl, const H2645NAL *nal)

结构体的获取
H264Context* pH264Context = AVCodecContext->priv_data
H264SliceContext *sl = H264Context->slice_ctx + H264Context->nb_slice_ctx_queued;

网上提供了一些方案,暂时没有理解
1)1.确保第一个解码的帧为I帧,确保I帧中有sps和pps信息
2)如果直接从rtsp流中一帧一帧的取,再一帧一帧的转码yuv,对AVpacket,AVframe没有特殊要求,完整就好。
3) 若果现将h264实时流存在共享内存中,再从共享内存中读取一帧的AVpacket,那么AVframe就不要循环清理,最好做成成员变量,否则非关键帧无法解码,会提示如上错误。

解决办法:将AVframe做成成员变量,不能用一次清理一次

本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/2057885,如需转载请自行联系原作者

FFmpeg non-existing PPS 0 referenced问题描述相关推荐

  1. FFMPEG:SPS和PPS

    使用RTP传输H264的时候,需要用到sdp协议描述,其中有两项:Sequence Parameter Sets (SPS) 和Picture Parameter Set (PPS)需要用到,那么这两 ...

  2. 【已解决】(uni-app)IOS 端 H5 应用无法发起请求,请求状态码为0,错误描述为request:fail

    [已解决](uni-app)IOS 端 H5 应用无法发起请求,请求状态码为0,错误描述为request:fail 目录 [已解决](uni-app)IOS 端 H5 应用无法发起请求,请求状态码为0 ...

  3. 深入浅出FFMPEG(二) SDK version 0.11

    用户接口 数据结构 基本概念 编解码器.数据帧.媒体流和容器是数字媒体处理系统的四个基本概念. 首先需要统一术语: 容器/文件(Conainer/File):即特定格式的多媒体文件. 媒体流(Stre ...

  4. Spring Boot 2.0 常用配置描述(官网翻译)

    常用配置描述 我们可以在application.properties文件中,application.yml文件中或命令行开关中指定各种属性. 本附录提供了常用Spring Boot属性的列表以及对使用 ...

  5. 基于阿里云直播实现视频推流(ffmpeg)/拉流(Django2.0)以及在线视频直播播放(支持http/https)功能

    由于5g网络的光速推广,视频业务又被推上了风口浪尖,在2019年初我们还在谈论照片,短视频等关键字,而进入2020年,我们津津乐道的就只有视频,视频,还是视频,普通人拿起手机做直播早已不是奢望,去年我 ...

  6. rtmp服务器显示fps是0,关于Ffmpeg,控制台显示“frame=0fps=0.0q=0.0lsize=0kB time=00:00:00.00”无数据拉/推...

    环境windows64+Nginx rtmp static+Ffmpeg static+Java1.8 即使我重启rtmp服务器,也没用. ffmpeg -i xxx/live.m3u8 -vcode ...

  7. 深入浅出,快速弄明白 gst-launch-1.0 PIPELINE-DESCRIPTION 管道描述语法

    1 话说 gst-launch-1.0 这条命令老牛掰了,看是很复杂的媒体流,用这条命令,一行代码就搞定了.看看下面这行代码,区区几十个字符,就建立了测试视频流: gst-launch-1.0 vid ...

  8. FFmpeg SPS/PPS剖析

    场景说明             在解码过程中,需要设置SPS/PPS等解码信息,才能够初始化解码器.有两种方式可以设置SPS/PPS,一种是手动指定SPS/PPS内容,指定AVCodecContex ...

  9. Live555接收h264使用ffmpeg解码为YUV420

    本文概要: 本文介绍了一种常用成熟的多媒体解码方案.使用live555作为流媒体数据源,建立rtsp会话请求h264数据流.后端使用ffmpeg解码h264流并保存为yuv420格式. 该方案比较成熟 ...

最新文章

  1. 2022-2028年中国PET基膜行业市场发展规模及市场分析预测报告
  2. 轻量级数据库Sqlite的使用
  3. Win32汇编扩展教程
  4. 协程,又称微线程和纤程
  5. AE 模板 天使之城
  6. CentOS开发ASP.NET Core入门教程
  7. django,cbv,模板层
  8. 【我的物联网成长记2】设备如何进行选型?
  9. linux内核移植imx8,NXP iMX8 Ubuntu 系统移植及 ROS 应用
  10. 威纶通定时循环操作宏_武器化excel4.0宏演化过程
  11. A Game with Traps—— 二分
  12. 计算机考研培训中公,计算机408
  13. 海外抖音推荐算法,玩转tiktok短视频内容运营
  14. 广东省取消职称英语和计算机,职称评审!这些省份短期内不会取消职称英语、计算机!...
  15. 微信头像制作小程序源码
  16. 2022 年面向初学者的 10 大免费 3D 建模软件
  17. python3 面向对象_傻瓜式学Python3——面向对象
  18. 慕尼黑大学计算机硕士专业,德国可以申请的英语授课的计算机硕士有哪些学校?...
  19. 大数据项目实战——电信业务大数据分析系统
  20. 统计学中的第p百分位数的理解

热门文章

  1. Http长连接的例子_亲测可用哦
  2. For input string:
  3. mysql 查看trige_mysql查看所有存储过程,函数,视图,触发器,表
  4. php 注入是什么意思,如何理解ThinkPHP框架里的依赖注入?
  5. python redis订阅_Python 学习笔记 - Redis
  6. ideajava目录显示类成员_面试:C++不可继承类
  7. 互联网晚报 | 4月15日 星期五 | 360推出元宇宙产品“N世界”;四川多地下调房贷利率;知情人士:上汽或推动复工复产...
  8. 我珍藏的内容分享给大家
  9. 中国连锁餐饮企业的资本之路
  10. 面试题,客户经常变更需求该如何处理?