ffmpeg C++推流 视频服务器报没有SPS、PPS
时间: 2023-11-09 21:06:14 浏览: 63
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函数用于将数据发送给服务器,具体实现可以根据自己的需求进行编写。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)