Zxj1351064076 发表于 2024-4-30 11:27:23

获取h265编码,getActiveDatta()获取到的是空数据

这个接口是我在进行h265模块编码后,调用的回调,获取h265编码。使用getActiveData()函数获取h265编码数据,但是为什么获取的都是空数据。

dengkx 发表于 2024-4-30 17:26:34

在回调中打印一下buf->getActiveData() 前面5个字节和buf->getActiveSize()的大小

Zxj1351064076 发表于 2024-4-30 17:38:50

dengkx 发表于 2024-4-30 17:26
在回调中打印一下buf->getActiveData() 前面5个字节和buf->getActiveSize()的大小

getActiveSize: 499
getActiveData : 00 00 00 01 02 。
大小为499,前五个byte为00 00 00 01 02。

dengkx 发表于 2024-4-30 17:50:13

Zxj1351064076 发表于 2024-4-30 17:38
getActiveSize: 499
getActiveData : 00 00 00 01 02 。
大小为499,前五个byte为00 00...

这不有数据吗?

Zxj1351064076 发表于 2024-4-30 17:56:06

dengkx 发表于 2024-4-30 17:50
这不有数据吗?

这样按字节打印是有数据。但是    shared_ptr<VideoBuffer> buf = static_pointer_cast<VideoBuffer>(buffer);
    char* char_data = static_cast<char*>(buf->getActiveData());
    std::vector<char> videobuffer(char_data, char_data + buf->getActiveSize());

      // 分块处理数据
    for (size_t i = 0; i < videobuffer.size(); i += BUFFER_SIZE) {
      size_t chunk_size = std::min(BUFFER_SIZE, videobuffer.size() - i);
      std::cout <<"chunk_size: "<< chunk_size << std::endl;
      // std::cout <<"videobuffer.data(): "<< videobuffer.data() << std::endl;
      shared_memory.writeData(videobuffer.data() + i, chunk_size);
    }这个有错误吗?写入的数据是一个空

Zxj1351064076 发表于 2024-5-8 10:50:53

dengkx 发表于 2024-4-30 17:50
这不有数据吗?

你好!请问一下,getActiveData和getActivesize获取的是一个完整的视频帧是吗?

dengkx 发表于 2024-5-8 14:54:14

Zxj1351064076 发表于 2024-5-8 10:50
你好!请问一下,getActiveData和getActivesize获取的是一个完整的视频帧是吗?

页: [1]
查看完整版本: 获取h265编码,getActiveDatta()获取到的是空数据