metaRTC8 freertos编程指南(bk7258/bk7259)

概述

metaRTC8已经在bk7258/bk7259 freertos适配成功,已经和bk7258/bk7259 sdk集成多个解决方案,解决方案(包含metaRTC源码)可从博通集成网站下载。

API应用代码

api应用代码可参考yangdemo/YangSfuDemo.c

初始化

复制代码
//open audio
//uac mic
audio_parameters_t audio_parameters = {1, 1, CODEC_FORMAT_G711A, CODEC_FORMAT_G711A, DB_SAMPLE_RARE_16K, DB_SAMPLE_RARE_16K, 0};
//board mic
//audio_parameters_t audio_parameters = {1, 0, CODEC_FORMAT_G711A, CODEC_FORMAT_G711A, DB_SAMPLE_RARE_16K, DB_SAMPLE_RARE_16K, 0};

doorbell_audio_turn_on(&audio_parameters);

//open camera
//uvc
//camera_parameters_t camera_parameters = {UVC_DEVICE_ID, width, height, 1, 0, 90};
//dvp
camera_parameters_t camera_parameters = {0, width, height, 1, 0, 0};
if(doorbell_camera_turn_on(&camera_parameters)){
	return;
}

YangPeerConnection* conn=(YangPeerConnection*)yang_user_calloc(1,sizeof(YangPeerConnection));
YangPacer* pacer=(YangPacer*)yang_user_calloc(1,sizeof(YangPacer));

yang_create_pacer(pacer);

// pacer->initAudio(pacer->session,Yang_AED_OPUS,48000,2);
pacer->initAudio(pacer->session,Yang_AED_PCMA,8000,1);
//pacer->initVideo(pacer->session,Yang_VED_H264,256);//720P
pacer->initVideo(pacer->session,Yang_VED_H264,128);//480P

建立连接

复制代码
YangPeerConnection* conn;
yang_init_peerInfo(&conn->peer.peerInfo);
conn->peer.peerInfo.uid=0;

conn->peer.peerInfo.direction=direction;

conn->peer.peerCallback.sslCallback.context = session;
conn->peer.peerCallback.sslCallback.sslAlert = yang_sslAlert;

conn->peer.peerCallback.recvCallback.context = session;
conn->peer.peerCallback.recvCallback.receiveAudio =	yang_receiveAudio;
conn->peer.peerCallback.recvCallback.receiveVideo = yang_receiveVideo;
//conn->peer.peerCallback.recvCallback.receiveMsg = yang_receiveMsg;

conn->peer.peerCallback.iceCallback.context = session;
conn->peer.peerCallback.iceCallback.onConnectionStateChange=yang_onConnectionStateChange;
conn->peer.peerCallback.iceCallback.onIceStateChange=yang_onIceStateChange;
conn->peer.peerCallback.iceCallback.onIceCandidate=yang_onIceCandidate;

conn->peer.peerCallback.rtcCallback.context=rtcCallback->context;
conn->peer.peerCallback.rtcCallback.setMediaConfig=rtcCallback->setMediaConfig;
conn->peer.peerCallback.rtcCallback.sendRequest=rtcCallback->sendRequest;

yang_create_peerConnection(conn);

//conn->addAudioTrack(Yang_AED_PCMA);
conn->addAudioTrack(&conn->peer,Yang_AED_OPUS);
conn->addVideoTrack(&conn->peer,Yang_VED_H264);
conn->addTransceiver(&conn->peer,YangMediaAudio,direction);
conn->addTransceiver(&conn->peer,YangMediaVideo,direction);

ret = yang_whip_connectWhipWhepServer(&conn->peer,url);

音频数据

复制代码
YangPushData* pushData;
YangPacer* pacer;
YangFrame audioFrame;

audioFrame.payload=payload;
audioFrame.nb=nb;
audioFrame.pts=ts;
pushData=pacer->getAudioData(pacer->session,&audioFrame);
conn->on_audio(&conn->peer,pushData);

视频数据

复制代码
//open lcd
// display_parameters_t display_parameters = {LCD_DEVICE_ST7701SN, 90, 0};
// doorbell_display_turn_on(&display_parameters);
frame_queue_v2_register_consumer(IMAGE_H264, CONSUMER_TRANSMISSION);

YangPushData* pushData;
YangPacer* pacer;
YangFrame videoFrame;

frame_buffer_t *frame = frame_queue_v2_get_frame(IMAGE_H264, CONSUMER_TRANSMISSION, 200);
videoFrame.pts=frame->timestamp;
videoFrame.frametype=(*(frame->frame + 4) & 0x1F) == YangAvcNaluTypeSPS?1:0;

if(videoFrame.frametype){
	videoFrame.payload=payload;
	videoFrame.nb=nb;
}else{
	videoFrame.payload=payload+4;
	videoFrame.nb=nb-4;	
}

pushData=pacer->getVideoData(pacer->session,&videoFrame);
conn->on_video(&conn->peer,pushData);
frame_queue_v2_release_frame(IMAGE_H264, CONSUMER_TRANSMISSION, frame);
相关推荐
kyle-fang5 小时前
decord源码安装指南
音视频·视频解析
AI创界者5 小时前
【开源精选】全网首发:LTX-2.3-OmniNFT 文图生视频单机整合包!8G 显存畅玩 / 多人对话 / 50系适配 / 批量队列
音视频
沐风_ZTL5 小时前
RKNN YOLOv5 推理直接使用 NV12 视频帧可行性分析
人工智能·yolo·音视频
INosdfgs5 小时前
nICEnnnnnnnLeeBilibiliDown:B站视频下载工具
其他·音视频
EasyGBS5 小时前
平安校园安防升级,国标GB28181视频平台EasyGBS实现全区域视频无死角合规管控
音视频
AI服务老曹5 小时前
深度解析企业级高并发视频云架构:基于 Docker 与 GB28181/RTSP 协议栈的边缘计算平台(附源码交付实践)
docker·架构·音视频
翼龙云_cloud7 小时前
阿里云代理商:阿里云HappyHorse AI 视频生成的全能创作引擎
人工智能·阿里云·云计算·音视频·happyhorse
Tech-Net7 小时前
TikTok视频怎么下载?2026最新TikTok无水印下载与批量解析教程
经验分享·音视频·视频编解码·视频处理·视频下载·tiktok视频下载·tiktok视频解析
顾道长生'7 小时前
(ICML-2026)面向指令式视频编辑的区域约束上下文生成
人工智能·音视频