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);
相关推荐
敢敢のwings3 小时前
Wan2.2 模型系统解读:从视频扩散到 WAM 世界模型模块
音视频
小猴子爱上树4 小时前
跨境电商AI批量图片翻译工具,视频字幕翻译免费试用
人工智能·python·音视频
AI服务老曹4 小时前
车牌识别算法接入AI视频分析平台的流程和误报优化
人工智能·算法·音视频
深念Y6 小时前
视频平台架构重构:从微服务到可插拔基础设施
后端·微服务·云原生·架构·rabbitmq·音视频·rocketmq
深念Y7 小时前
06-移动端三技术栈优劣对比-理论推演
服务器·云原生·架构·音视频·短视频
FFZero18 小时前
[mpv架构] (三) mpv 怎么实现 MP4 秒开?
c++·音视频·mpv
Dovis(誓平步青云)8 小时前
同一条路线在手机和平板上怎样换一种排版
android·开发语言·数据库·智能手机·音视频
深念Y9 小时前
视频平台架构重构:从微服务到云原生
服务器·微服务·云原生·重构·架构·音视频·短视频
2601_9556624619 小时前
短视频配音 7 款测评:旁白情绪、断句、呼吸感完整打分
人工智能·音视频·语音识别
bj_bluewei_tech1 天前
拯救者外接耳机麦克风没声音,更换耳机无效,排查主板音频信号电路
电脑·笔记本电脑·音视频