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

火山 RTC 引擎10 ----远端视频 转网易视频格式

一、

1、原网易视频回调

void  onFrameDataCallback(uid_t uid,          /**< uid */void *data,         /**< 数据指针 */uint32_t type,      /**< NERtcVideoType */uint32_t width,     /**< 宽度 */uint32_t height,    /**< 高度 */uint32_t count,     /**< 数据类型个数,即offset及stride的数目 */uint32_t offset[4], /**< 每类数据偏移 */uint32_t stride[4], /**< 每类数据步进 */uint32_t rotation,  /**< NERtcVideoRotation */void *user_data     /**< 用户透传数据 */){//40267293  刘亚晓  40223353 小黑8Json::Value values;values["account"] = uid;/*bool bAudioMode = false;if (width <= 320)bAudioMode = true;elsebAudioMode = false;std::string im = std::to_string(uid);if (!BExistIm(im) || BAudioModeOfIm(im) != bAudioMode){ResetAudioMode(im, bAudioMode);// 在UI线程中执行更新UI的操作if (uiCallback)uiCallback(uid,bAudioMode);}*/std::string json = values.toStyledString();int64_t time = GetCurTimeStamp();uint32_t size = width * height * 3 / 2;VideoManager::GetInstance()->video_frame_mng_.AddVideoFrame(false, time, (char*)data, size, width, height, json, nim_comp::VideoFrameMng::Ft_I420, false, offset, stride);//	VideoManager::GetInstance()->video_frame_mng2_.AddVideoFrame(false, time, (char*)data, size, width, height, json, nim_comp::VideoFrameMng::Ft_I420, false, offset, stride);return;}

2、火山视频格式转网易

	bool ChatroomForm::OnFrameDataCallback_ByterRTC(bytertc::IVideoFrame* video_frame){if (!video_frame) return false;bytertc::VideoFrameType type = video_frame->frameType();bytertc::VideoPixelFormat format = video_frame->pixelFormat();bytertc::VideoContentType contentType = video_frame->videoContentType();int width = video_frame->width();int height = video_frame->height();const int planeCount = video_frame->numberOfPlanes();if (planeCount < 3) return false; // I420 需要至少3个planeuint8_t* y_plane = video_frame->getPlaneData(0);uint8_t* u_plane = video_frame->getPlaneData(1);uint8_t* v_plane = video_frame->getPlaneData(2);uint32_t stride[4] = {static_cast<uint32_t>(video_frame->getPlaneStride(0)),static_cast<uint32_t>(video_frame->getPlaneStride(1)),static_cast<uint32_t>(video_frame->getPlaneStride(2)),0};uint8_t* base_ptr = y_plane;uint32_t offset[4] = {0,static_cast<uint32_t>(u_plane - base_ptr),static_cast<uint32_t>(v_plane - base_ptr),0};Json::Value values;values["account"] = "40267293";std::string json = values.toStyledString();int64_t time = GetCurTimeStamp();uint32_t size = width * height * 3 / 2;VideoManager::GetInstance()->video_frame_mng_.AddVideoFrame(false, time, (char*)base_ptr, size, width, height, json, nim_comp::VideoFrameMng::Ft_I420, false, offset, stride);return true;}

http://www.xdnf.cn/news/960319.html

相关文章:

  • 镜头景深的影响因素有哪些
  • 【西门子杯工业嵌入式-7-OLED】
  • 高防CDN是什么?和传统CDN有什么区别?
  • 深入浅出 红黑树:如何手写红黑树(基于TreeMap,算法导论的实现)
  • 振动力学:复模态法和状态空间描述(一般阻尼系统的自由振动)
  • 网站维护页面Plus + HTML源码(源码下载)
  • 门静脉高压——检查
  • 【python深度学习】Day 49 CBAM注意力
  • 【题解-洛谷】P10480 可达性统计
  • [USACO23FEB] Bakery S
  • libfmt: 现代C++的格式化工具库介绍与酷炫功能
  • 本地化部署 Dify 打造专属 AI 助手并嵌入网站
  • 4米铸铁划线平台在工业机械制造有哪些用途
  • 关键领域软件测试的挑战与 Gitee Test 实践探索
  • 树莓派超全系列教程文档--(59)树莓派摄像头rpicam-apps
  • 赞助打赏单页HTML源码(源码下载)
  • 龙虎榜——20250609
  • 买卖股票的最佳时机
  • 提取目标区域的Argo剖面数据(nc)
  • 【机械视觉】Halcon—【十二、边缘提取】
  • nnUNet V2修改网络——暴力替换网络为UNet++
  • 第1课 SiC MOSFET与 Si IGBT 基本参数对比
  • 解析“道作为序位生成器”的核心原理
  • 网页封装APP的原理:将网页转化为移动应用
  • aardio 自动识别验证码输入
  • 起重机起升机构的安全装置有哪些?
  • MS21147四路差分线驱动器可P2P兼容SN65MLVD047
  • Python异步编程:深入理解协程的原理与实践指南
  • 篇章一 论坛系统——前置知识
  • 【RAG排序】rag排序代码示例-简单版