PPS 2013年校园招聘C++开发工程师笔试题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SPS(Sequence Parameter Set)和PPS(Picture Parameter Set)是H.264视频编码标准中的两个重要参数集,包含了视频编码的一些基本参数信息,比如视频的分辨率、码率、帧率、GOP大小等等。 在使用ffmpeg进行视频推流时,如果服务器报告“没有SPS、PPS”错误,通常是因为推送的视频流中没有包含SPS和PPS参数集。这种情况下,需要在代码中手动添加SPS和PPS参数集。 具体的做法是: 1. 在代码中获取到视频编码器的AVCodecContext结构体。 2. 从AVCodecContext中获取到AVCodecParameters结构体。 3. 从AVCodecParameters中获取到SPS和PPS参数集的数据。 4. 将SPS和PPS数据分别打包成NALU单元并发送给服务器。 以下是参考代码: ``` AVCodecContext* codec_ctx = ...;//获取到编码器的AVCodecContext结构体 AVCodecParameters* codec_params = codec_ctx->codecpar;//获取到编码器的AVCodecParameters结构体 //获取SPS和PPS数据 uint8_t* sps_data = codec_params->extradata + 4; uint32_t sps_size = (codec_params->extradata[0] << 8) | codec_params->extradata[1]; uint8_t* pps_data = sps_data + sps_size + 1; uint32_t pps_size = ((pps_data[0] << 8) | pps_data[1]) & 0x00FFFFFF; //打包SPS数据 uint8_t* sps_nalu = new uint8_t[4 + sps_size]; sps_nalu[0] = 0x00; sps_nalu[1] = 0x00; sps_nalu[2] = 0x00; sps_nalu[3] = 0x01; memcpy(sps_nalu + 4, sps_data, sps_size); //打包PPS数据 uint8_t* pps_nalu = new uint8_t[4 + pps_size]; pps_nalu[0] = 0x00; pps_nalu[1] = 0x00; pps_nalu[2] = 0x00; pps_nalu[3] = 0x01; memcpy(pps_nalu + 4, pps_data, pps_size); //发送SPS和PPS数据 send_to_server(sps_nalu, 4 + sps_size); send_to_server(pps_nalu, 4 + pps_size); delete[] sps_nalu; delete[] pps_nalu; ``` 其中,send_to_server函数用于将数据发送给服务器,具体实现可以根据自己的需求进行编写。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值