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);
相关推荐
小鹿研究点东西13 小时前
AI直播系统怎么搭?
人工智能·ffmpeg·自动化·音视频·语音识别
byte轻骑兵13 小时前
【AVRCP】规范精讲[29]:多播放器切换全流程,蓝牙音频控制如何精准选歌台
智能手机·音视频·avrcp·音视频控制·车机蓝牙
南山有乔木78914 小时前
喜马拉雅XM转MP3怎么操作?xm转换成MP3后播放更方便
音视频
之歆14 小时前
速影 AI · SwiftReel —— 图生视频 SaaS
人工智能·音视频
DogDaoDao15 小时前
AV1 解码器核心:decodeframe.c文件深度剖析
音视频·实时音视频·视频编解码·av1·解码器·decode·vp9
数据知道16 小时前
指纹浏览器:DNS 泄漏防范与 WebRTC 本地 IP 屏蔽的底层实现
爬虫·网络协议·tcp/ip·安全·webrtc·数据采集·指纹浏览器
小鹿研究点东西1 天前
AI直播工具实操:从直播录制、AI剪辑去重到直播伴侣开播完整流程
人工智能·自动化·音视频·语音识别
wen_zhufeng1 天前
信号与系统:采样、量化与信号连续/离散答疑文档
音视频
byte轻骑兵1 天前
【LE Audio】CAS精讲[1]: 基础约定定乾坤,读懂音频协同的通用规则
音视频·蓝牙耳机·蓝牙音箱·le audio·低功耗音频
肖爱Kun1 天前
STL标准模块库操作
开发语言·音视频