Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 9 additions & 12 deletions example/src/renderer/components/BaseComponent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import {
AgoraDivider,
AgoraList,
AgoraStyle,
AgoraText,
AgoraTextInput,
AgoraView,
RtcSurfaceView,
Expand Down Expand Up @@ -225,22 +224,20 @@ export abstract class BaseComponent<
protected renderUser(user: VideoCanvas): ReactElement | undefined {
const { enableVideo } = this.state;
return (
<AgoraCard
key={`${user.uid} - ${user.sourceType}`}
title={`${user.uid} - ${user.sourceType}`}
>
{enableVideo ? (
<>
<AgoraText>Click view to mirror</AgoraText>
{this.renderVideo(user)}
</>
) : undefined}
<AgoraCard key={`${user.uid} - ${user.sourceType}`}>
{enableVideo ? <>{this.renderVideo(user)}</> : undefined}
</AgoraCard>
);
}

protected renderVideo(user: VideoCanvas): ReactElement | undefined {
return <RtcSurfaceView canvas={user} />;
return (
<RtcSurfaceView
containerClass={AgoraStyle.meetSurfaceViewContainer}
videoClass={AgoraStyle.meetSurfaceViewVideo}
canvas={user}
/>
);
}

protected renderConfiguration(): ReactElement | undefined {
Expand Down
1 change: 1 addition & 0 deletions example/src/renderer/components/RtcSurfaceView/index.css
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.window-item{flex:1}.video-item{flex:1;background:#000;overflow:hidden}
4 changes: 2 additions & 2 deletions example/src/renderer/components/RtcSurfaceView/index.scss
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
.window-item {
flex: 1;
height: 240px;
// height: 240px;
}

.video-item {
flex: 1;
height: 240px;
// height: 240px;
background: #000000;
overflow: hidden;
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,12 @@ import {
BaseComponent,
BaseVideoComponentState,
} from '../../../components/BaseComponent';
import { AgoraButton, AgoraDropdown, AgoraView } from '../../../components/ui';
import {
AgoraButton,
AgoraDropdown,
AgoraView,
RtcSurfaceView,
} from '../../../components/ui';
import Config from '../../../config/agora.config';
import { arrayToItems } from '../../../utils';
import { askMediaAccess } from '../../../utils/permissions';
Expand All @@ -41,6 +46,7 @@ export default class JoinChannelVideo
joinChannelSuccess: false,
remoteUsers: [],
startPreview: false,
hideRightBar: true,
};
}

Expand Down Expand Up @@ -69,9 +75,18 @@ export default class JoinChannelVideo
// If you only call `enableAudio`, only relay the audio stream to the target channel
this.engine.enableVideo();

// Start preview before joinChannel
this.engine.startPreview();
this.engine.setVideoEncoderConfiguration({
frameRate: 30,
dimensions: {
width: 1920,
height: 1080,
},
});
this.setState({ startPreview: true });

setTimeout(() => {
this.joinChannel();
}, 1000);
}

/**
Expand Down Expand Up @@ -172,11 +187,25 @@ export default class JoinChannelVideo
}

protected renderUsers(): ReactElement | undefined {
return super.renderUsers();
const { joinChannelSuccess, remoteUsers } = this.state;
return (
<>
{joinChannelSuccess ? (
<>
{remoteUsers.map((item) =>
this.renderUser({
uid: item,
sourceType: VideoSourceType.VideoSourceRemote,
})
)}
</>
) : undefined}
</>
);
}

protected renderVideo(user: VideoCanvas): ReactElement | undefined {
return super.renderVideo(user);
protected renderUser(user: VideoCanvas): ReactElement | undefined {
return <RtcSurfaceView canvas={user} />;
}

protected renderConfiguration(): ReactElement | undefined {
Expand Down
120 changes: 120 additions & 0 deletions move.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
#!/bin/bash

# 定义源路径和目标路径
SOURCE_PATH="/Users/guoxianzhe/agora/iris/build/mac/DCG/MAC/output/Release/AgoraRtcWrapper.framework"
TARGET_PATH="/Users/guoxianzhe/agora/Electron-SDK/build/Release"

# 输出操作信息
echo "开始复制 AgoraRtcWrapper.framework..."
echo "源路径: $SOURCE_PATH"
echo "目标路径: $TARGET_PATH"

# 检查源文件是否存在
if [ ! -d "$SOURCE_PATH" ]; then
echo "错误: 源文件 $SOURCE_PATH 不存在!"
exit 1
fi

# 确保目标目录存在
if [ ! -d "$TARGET_PATH" ]; then
echo "目标目录不存在,正在创建..."
mkdir -p "$TARGET_PATH"
fi

# 执行复制操作 (使用 -R 递归复制整个目录,-f 强制覆盖)
cp -Rf "$SOURCE_PATH" "$TARGET_PATH"

# 检查复制结果
if [ $? -eq 0 ]; then
echo "✅ 复制成功!"
echo "AgoraRtcWrapper.framework 已复制到 $TARGET_PATH"
else
echo "❌ 复制失败!"
exit 1
fi

# 设置执行权限
chmod -R 755 "$TARGET_PATH/AgoraRtcWrapper.framework"
echo "已设置框架文件权限"

echo "操作完成"


# 定义源路径和目标路径
SOURCE_PATH="/Users/guoxianzhe/agora/iris/build/mac/DCG/MAC/output/Release/AgoraRtcWrapper.framework"
TARGET_PATH="/Users/guoxianzhe/Downloads/agora-demo-app.app/Contents/Resources/Frameworks/FcrUIScene.framework/Versions/A/Resources/biagmeeting.app/Contents/Resources/app.asar.unpacked/node_modules/agora-electron-sdk/build/Release"

# 输出操作信息
echo "开始复制 AgoraRtcWrapper.framework..."
echo "源路径: $SOURCE_PATH"
echo "目标路径: $TARGET_PATH"

# 检查源文件是否存在
if [ ! -d "$SOURCE_PATH" ]; then
echo "错误: 源文件 $SOURCE_PATH 不存在!"
exit 1
fi

# 确保目标目录存在
if [ ! -d "$TARGET_PATH" ]; then
echo "目标目录不存在,正在创建..."
mkdir -p "$TARGET_PATH"
fi

# 执行复制操作 (使用 -R 递归复制整个目录,-f 强制覆盖)
cp -Rf "$SOURCE_PATH" "$TARGET_PATH"

# 检查复制结果
if [ $? -eq 0 ]; then
echo "✅ 复制成功!"
echo "AgoraRtcWrapper.framework 已复制到 $TARGET_PATH"
else
echo "❌ 复制失败!"
exit 1
fi

# 设置执行权限
chmod -R 755 "$TARGET_PATH/AgoraRtcWrapper.framework"
echo "已设置框架文件权限"

echo "操作完成"


# 定义源路径和目标路径
SOURCE_PATH="/Users/guoxianzhe/agora/Electron-SDK/js"
TARGET_PATH="/Users/guoxianzhe/Downloads/agora-demo-app.app/Contents/Resources/Frameworks/FcrUIScene.framework/Versions/A/Resources/biagmeeting.app/Contents/Resources/app.asar.unpacked/node_modules/agora-electron-sdk"

# 输出操作信息
echo "开始复制 js..."
echo "源路径: $SOURCE_PATH"
echo "目标路径: $TARGET_PATH"

# 检查源文件是否存在
if [ ! -d "$SOURCE_PATH" ]; then
echo "错误: 源文件 $SOURCE_PATH 不存在!"
exit 1
fi

# 确保目标目录存在
if [ ! -d "$TARGET_PATH" ]; then
echo "目标目录不存在,正在创建..."
mkdir -p "$TARGET_PATH"
fi

# 执行复制操作 (使用 -R 递归复制整个目录,-f 强制覆盖)
cp -Rf "$SOURCE_PATH" "$TARGET_PATH"

# 检查复制结果
if [ $? -eq 0 ]; then
echo "✅ 复制成功!"
echo "js 已复制到 $TARGET_PATH"
else
echo "❌ 复制失败!"
exit 1
fi

# 设置执行权限
chmod -R 755 "$TARGET_PATH"
echo "已设置 js 文件权限"

echo "操作完成"
13 changes: 6 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "agora-electron-sdk",
"version": "4.3.2-build.201-rc.2",
"version": "4.3.2-build.156-rc.3",
"description": "agora-electron-sdk",
"main": "js/AgoraSdk",
"types": "types/AgoraSdk.d.ts",
Expand Down Expand Up @@ -113,8 +113,7 @@
"tagName": "v${version}"
},
"npm": {
"publish": true,
"skipChecks": true
"publish": true
},
"github": {
"release": true
Expand Down Expand Up @@ -144,9 +143,9 @@
"yuv-canvas": "1.2.6"
},
"agora_electron": {
"iris_sdk_win": "https://download.agora.io/sdk/release/iris_4.3.2.201-build.3_DCG_Windows_Video_Standalone_20251125_1034_31848.zip",
"iris_sdk_mac": "https://download.agora.io/sdk/release/iris_4.3.2.201-build.3_DCG_Mac_Video_Standalone_20251125_1034_32779.zip",
"native_sdk_win": "https://download.agora.io/sdk/release/Agora_Native_SDK_for_Windows_rel.v4.3.2.201_mch_30745_FULL_20251124_2158_991995.zip",
"native_sdk_mac": "https://download.agora.io/sdk/release/Agora_Native_SDK_for_Mac_rel.v4.3.2.201_mch_26118_FULL_20251124_2139_991997.zip"
"iris_sdk_win": "https://download.agora.io/sdk/release/iris_4.3.2.156-build.1_DCG_Windows_Video_Standalone_20250920_0141_31774.zip",
"iris_sdk_mac": "https://download.agora.io/sdk/release/iris_4.3.2.156-build.1_DCG_Mac_Video_Standalone_20250920_0137_32710.zip",
"native_sdk_win": "https://download.agora.io/sdk/release/Agora_Native_SDK_for_Windows_rel.v4.3.2.156_30176_FULL_20250920_1017_892809.zip",
"native_sdk_mac": "https://download.agora.io/sdk/release/Agora_Native_SDK_for_Mac_rel.v4.3.2.156_25579_FULL_20250920_1004_892812.zip"
}
}
6 changes: 3 additions & 3 deletions source_code/agora_node_ext/agora_electron_bridge.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,7 @@ napi_value AgoraElectronBridge::GetVideoFrame(napi_env env,
videoFrame.metadata_size = 0;
videoFrame.alphaBuffer = nullptr;

bool isNewFrame = false;
bool hasMoreFrame = false;
napi_value retObj;
int32_t ret = ERR_NOT_INITIALIZED;
status = napi_create_object(env, &retObj);
Expand All @@ -445,10 +445,10 @@ napi_value AgoraElectronBridge::GetVideoFrame(napi_env env,
}

ret = agoraElectronBridge->_iris_rendering->GetVideoFrameCache(
config, &videoFrame, isNewFrame);
config, &videoFrame, hasMoreFrame);

napi_obj_set_property(env, retObj, "ret", ret);
napi_obj_set_property(env, retObj, "isNewFrame", isNewFrame);
napi_obj_set_property(env, retObj, "hasMoreFrame", hasMoreFrame);

napi_obj_set_property(env, obj1, "type", videoFrame.type);
napi_obj_set_property(env, obj1, "width", videoFrame.width);
Expand Down
2 changes: 1 addition & 1 deletion ts/Renderer/IRenderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export abstract class IRenderer {
this.parentElement = undefined;
}

public drawFrame(_videoFrame?: VideoFrame): void {
public drawFrame(uid: number, _videoFrame?: VideoFrame): void {
if (!this.canvas) return;
if (this.canvas.style.display !== '') {
this.canvas.style.display = '';
Expand Down
Loading