当前位置: 首页 > wzjs >正文

网站推广软文范例软文营销成功案例

网站推广软文范例,软文营销成功案例,网络公司是干什么工作的,桂林北京网站建设H264处理逻辑 整体逻辑分析 实现逻辑 解析 RTP 包头:首先检查 RTP 头部的有效负载类型(payloadType)是否匹配处理扩展头:如果 RTP 包包含扩展头,跳过扩展头部分,获取有效负载处理分片数据:H264…

H264处理逻辑

整体逻辑分析

实现逻辑

  • 解析 RTP 包头:首先检查 RTP 头部的有效负载类型(payloadType)是否匹配
  • 处理扩展头:如果 RTP 包包含扩展头,跳过扩展头部分,获取有效负载
  • 处理分片数据:H264 分片数据通过 FU 指示符和 FU 头部来标识开始、中间和结束部分,分片数据会拼接并在结束时回调给外部
  • 单一封包数据:如果是单一封包(非分片),直接将数据传递给回调函数

代码实现

头文件

// NALU头部数据结构
struct H264NaluHeader {uint8_t type : 5;uint8_t nri : 2;uint8_t f : 1;
};
// 分片数据结构
struct H264FUIndicator {uint8_t type : 5;uint8_t nri : 2;uint8_t f : 1;};struct H264FUHeader {uint8_t type : 5;uint8_t r : 1;uint8_t e : 1; // 结束标志uint8_t s : 1; // 开始标志};class H264Demuxer : public RTPDemuxer {
public:void InputData(const uint8_t* data, size_t size);
private:uint8_t buffer_[4 * 1024 * 1024];  // 用于存储拼接后的数据bool find_start_ = false;  // 是否已经找到一个分片的起始部分size_t pos_buffer_ = 0;    // 当前缓冲区的数据位置
};

源文件

//  总结:H264 数据进行解复用,处理分片(如果有)并将视频数据传递给回调
void H264Demuxer::InputData(const uint8_t* data, size_t size) {//1. 解析RTP头部struct RtpHeader *header = (struct RtpHeader *)data;int payload_type = header->payloadType;if (payload_type != payload_) {return;}//2. 提取有效的负载数据const uint8_t* payload = data + sizeof(struct RtpHeader);size_t payload_len = size - sizeof(struct RtpHeader);if (header->extension) {const uint8_t *extension_data = payload;size_t extension_length = 4 * (extension_data[2] << 8 | extension_data[3]);size_t payload_offset = 4 + extension_length;payload = payload + payload_offset;payload_len = payload_len - payload_offset;}//3. 处理分片FU数据struct H264NaluHeader *h264_header = (struct H264NaluHeader *)payload;if(h264_header->type == 28){//FU指示器struct H264FUIndicator *fu_indicator = (struct H264FUIndicator *)payload;//FU头部struct H264FUHeader *fu_header = (struct H264FUHeader *)&payload[1];// 3.1 进一步处理分片数据,起始分片数据处理if (fu_header->s == 1) {  // start//缓冲区存储:0001+H264NaluHeaderfind_start_ = true;if (pos_buffer_ == 0) {struct H264NaluHeader header;header.f = fu_indicator->f;header.nri = fu_indicator->nri;header.type = fu_header->type;buffer_[0] = 0;buffer_[1] = 0;buffer_[2] = 0;buffer_[3] = 1;memcpy(buffer_ + 4, &header, sizeof(struct H264NaluHeader));pos_buffer_ += 4 + sizeof(struct H264NaluHeader);}memcpy(buffer_ + pos_buffer_, payload + 2, payload_len - 2);pos_buffer_ += payload_len - 2;}else if (fu_header->e == 1) {  // endif (find_start_ == false) {return;}memcpy(buffer_ + pos_buffer_, payload + 2, payload_len - 2);pos_buffer_ += payload_len - 2;// 拼接结束后交给视频处理器处理if (call_back_) {call_back_->OnVideoData(ntohl(header->timestamp),  buffer_, pos_buffer_);}find_start_ = false;pos_buffer_ = 0;}else {  // 中间分片if (!find_start_) {return;}memcpy(buffer_ + pos_buffer_, payload + 2, payload_len - 2);pos_buffer_ += payload_len - 2;}   }
}

H264处理逻辑

整体逻辑分析

  • 解析 RTP 包头:首先检查 RTP 包头,判断是否为我们关心的 H.265 视频数据。
  • 处理 RTP 扩展头:如果 RTP 包中包含扩展头,跳过扩展头,获取有效负载部分。
  • 处理 H.265 分片数据:H.265 视频数据可能被分成多个 RTP 包传输,使用 FU 头部标识分片的开始、中间和结束部分。H265Demuxer 将这些分片数据拼接成完整的视频帧。
  • 单一封包数据:如果数据不是分片,直接将完整的视频帧数据通过回调传递给外部

代码实现

头文件

// H265 NALU头部数据结构
struct H265NaluHeader {uint16_t layer_hi : 1;uint16_t type : 6; // NALU类型uint16_t f : 1;   //  标志位uint16_t tid : 3; //  类型标识符uint16_t layer_low : 5; 
};
// 分片数据结构
struct H265FUHeader {uint8_t type : 6; // NALU类型uint8_t e : 1;   // 结束标志uint8_t s : 1;   // 开始标志
};// H265解复用器
class H265Demuxer : public RTPDemuxer {
public:void InputData(const uint8_t* data, size_t size) override;
private:uint8_t buffer_[4 * 1024 * 1024];  // 用于存储拼接后的数据bool find_start_ = false;  // 是否已经找到一个分片的起始部分size_t pos_buffer_ = 0;    // 当前缓冲区的数据位置
};

源文件

//  总结:H265 数据进行解复用,处理分片(如果有)并将视频数据传递给回调
void H265Demuxer::InputData(const uint8_t* data, size_t size){//1. 解析RTP头部struct RtpHeader *header = (struct RtpHeader *)data;int payload_type = header->payloadType;if (payload_type != payload_) {return;}//2. 提取有效的负载数据const uint8_t* payload = data + sizeof(struct RtpHeader);size_t payload_len = size - sizeof(struct RtpHeader);if (header->extension) {const uint8_t *extension_data = payload;size_t extension_length = 4 * (extension_data[2] << 8 | extension_data[3]);size_t payload_offset = 4 + extension_length;payload = payload + payload_offset;payload_len = payload_len - payload_offset;}//3. 处理分片FU数据struct H265NaluHeader *h265_header = (struct H265NaluHeader *)payload;if(h265_header->type == 49){//FU指示器struct H265FUHeader *fu_header = (struct H265FUHeader *)&payload[2];if (fu_header->s ==1){// 分片开始处理find_start_ = true;if(pos_buffer_ == 0){buffer_[0] = 0;buffer_[1] = 0;buffer_[2] = 0;buffer_[3] = 1;memcpy(buffer_ + 4, &header, sizeof(struct H265NaluHeader));pos_buffer_ += 4 + sizeof(struct H265NaluHeader);}memcpy(buffer_ + pos_buffer_, payload + 3, payload_len - 3);pos_buffer_ += payload_len - 3;}else if(fu_header->e ==1){// 结束分片标志处理if(find_start_ == false){return;}memcpy(buffer_ + pos_buffer_, payload + 3, payload_len - 3);pos_buffer_ += payload_len - 3;if (call_back_) {call_back_->OnVideoData(ntohl(header->timestamp), buffer_, pos_buffer_);}find_start_ = false;pos_buffer_ = 0;}else{// 中间分片处理if (!find_start_) {return;}memcpy(buffer_ + pos_buffer_, payload + 3, payload_len - 3);pos_buffer_ += payload_len - 3;}}else{ // 单一封包buffer_[0] = 0;buffer_[1] = 0;buffer_[2] = 0;buffer_[3] = 1;memcpy(buffer_ + 4, payload, payload_len);if(call_back_){call_back_->OnVideoData(ntohl(header->timestamp),  buffer_, payload_len + 4);}}return;
}
http://www.dtcms.com/wzjs/279120.html

相关文章:

  • 网站开发与设计的实训场地12月10日新闻
  • 如何远程连接 网站 数据库今天中国新闻
  • 潍坊做网站优化广州全网推广
  • flask网站开发源码郴州seo快速排名
  • 百度权重高的网站长沙疫情最新数据消息
  • 怎么做百度提交入口网站什么叫软文推广
  • 网上三维展馆网站是怎么做的销售
  • 设计网站页面注意事项企业宣传片
  • 做网站推广多少钱网络推广平台有哪些渠道
  • 荥阳网站制作搜索引擎营销的英文缩写是
  • 4s店网站建设如何优化关键词搜索排名
  • 腾讯云 网站备案超级seo工具
  • 不用下载能直接进入的正能量网站网域名解析ip查询
  • 数据来源于网站怎么做参考文献平台怎么推广
  • 教育行业网站建设审批阿亮seo技术顾问
  • 给军方做网站套模板行不行国际时事新闻最新消息
  • 网站不备案如何让百度快速收录网站文章
  • wordpress piroboxseo方式包括
  • 我想卖东西去哪个网站站长之家综合查询工具
  • 抚州网站建设公司保定百度推广联系电话
  • 做损坏文档的网站推广赚钱的软件
  • 搭建电商平台 方案seo优化技术招聘
  • 专业做化妆品外包材的招聘网站今日头条新闻
  • 重庆腊肠怎么制作seo线上培训班
  • 黄页88网官网电话百度搜索排名优化
  • 深圳网站建设价格多少网络口碑营销名词解释
  • flashxml网站模板b站推广链接
  • 登录河北建设厅网站进入不了东莞网站推广排名
  • 做会计要经常关注哪些网站百度如何免费打广告
  • 淘宝上做进出口网站有哪些厦门seo关键词优化培训