相关疑难解决方法(0)

WebRTC:编码器实现中的 RTPFragmentationHeader 是什么?

我已修改h264_encoder_impl为使用基于 nvidia 网格的硬件编码器。这是通过用 Nvidia API 调用替换 OpenH264 特定调用来完成的。编码流可以成功写入文件,但写入_buffer_sizeencoded_image_还不够,RTPFragmentationHeader还需要填充。

// RtpFragmentize(EncodedImage* encoded_image,
//                       std::unique_ptr<uint8_t[]>* encoded_image_buffer,
//                       const VideoFrameBuffer& frame_buffer,
//                       SFrameBSInfo* info,
//                      RTPFragmentationHeader* frag_header)

// encode
openh264_->Encode(input, &info /*out*/);

// fragmentize ?
RtpFragmentize(&encoded_image_ /*out*/, &encoded_image_buffer_, *frame_buffer, 
               &info, &frag_header /*out*/); 

// ...

// send 
encoded_image_callback_->OnEncodedImage(encoded_image_, &codec_specific, &frag_header);
Run Code Online (Sandbox Code Playgroud)

当前Openh264根据实施填充frag_headerRTPFragmentize()和VP8不同填充它。我可以看到 NAL 单元和层也计算的东西,encoded_image->_length但我不知道如何。

我在任何地方都找不到关于它的任何文档。我只有 VP8 和 OpenH264 实现。

那么什么是RTPFragmentationHeader?它有什么作用?什么是encoded_image->_length?使用自定义H264编码器时如何正确填充?我可以找到 startcode 但接下来呢?如何填满它的所有成员?

video video-streaming h.264 webrtc openh264

3
推荐指数
1
解决办法
1334
查看次数

标签 统计

h.264 ×1

openh264 ×1

video ×1

video-streaming ×1

webrtc ×1