Skip to content

Commit 7999f38

Browse files
author
xianing
committed
support water mark feature
1 parent 3ef3de4 commit 7999f38

6 files changed

Lines changed: 31 additions & 1 deletion

File tree

1.16 KB
Loading

Android/APIExample/app/src/main/java/io/agora/api/example/examples/basic/JoinChannelVideo.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.Map;
2424
import java.util.concurrent.ConcurrentHashMap;
2525

26+
import io.agora.api.component.Constant;
2627
import io.agora.api.example.MainApplication;
2728
import io.agora.api.example.R;
2829
import io.agora.api.example.annotation.Example;
@@ -35,8 +36,10 @@
3536
import io.agora.rtc.models.ChannelMediaOptions;
3637
import io.agora.rtc.video.VideoCanvas;
3738
import io.agora.rtc.video.VideoEncoderConfiguration;
39+
import io.agora.rtc.video.WatermarkOptions;
3840

3941
import static io.agora.api.example.common.model.Examples.BASIC;
42+
import static io.agora.rtc.video.VideoCanvas.RENDER_MODE_FIT;
4043
import static io.agora.rtc.video.VideoCanvas.RENDER_MODE_HIDDEN;
4144
import static io.agora.rtc.video.VideoEncoderConfiguration.FRAME_RATE.FRAME_RATE_FPS_15;
4245
import static io.agora.rtc.video.VideoEncoderConfiguration.ORIENTATION_MODE.ORIENTATION_MODE_ADAPTIVE;
@@ -236,6 +239,15 @@ private void joinChannel(String channelId)
236239
VideoEncoderConfiguration.ORIENTATION_MODE.valueOf(((MainApplication)getActivity().getApplication()).getGlobalSettings().getVideoEncodingOrientation())
237240
));
238241

242+
// Setup watermark options
243+
WatermarkOptions watermarkOptions = new WatermarkOptions();
244+
int size = ((MainApplication)getActivity().getApplication()).getGlobalSettings().getVideoEncodingDimensionObject().width / 6;
245+
int height = ((MainApplication)getActivity().getApplication()).getGlobalSettings().getVideoEncodingDimensionObject().height;
246+
watermarkOptions.positionInPortraitMode = new WatermarkOptions.Rectangle(10,height/2,size,size);
247+
watermarkOptions.positionInLandscapeMode = new WatermarkOptions.Rectangle(10,height/2,size,size);
248+
watermarkOptions.visibleInPreview = true;
249+
engine.addVideoWatermark(Constant.WATER_MARK_FILE_PATH, watermarkOptions);
250+
239251
/**Please configure accessToken in the string_config file.
240252
* A temporary token generated in Console. A temporary token is valid for 24 hours. For details, see
241253
* https://docs.agora.io/en/Agora%20Platform/token?platform=All%20Platforms#get-a-temporary-token

Android/APIExample/lib-component/src/main/java/io/agora/api/component/Constant.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ public class Constant {
1616
public static final String MIX_FILE_PATH = "/assets/music_1.m4a";
1717

1818
public static final String EFFECT_FILE_PATH = "/assets/effectA.wav";
19+
20+
public static final String WATER_MARK_FILE_PATH = "/assets/agora-logo.png";
1921
}

iOS/APIExample.xcodeproj/project.pbxproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
archiveVersion = 1;
44
classes = {
55
};
6-
objectVersion = 51;
6+
objectVersion = 52;
77
objects = {
88

99
/* Begin PBXBuildFile section */
@@ -111,6 +111,7 @@
111111
7F76DCA92571794C00E8B7BC /* SettingsCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F76DCA82571794C00E8B7BC /* SettingsCells.swift */; };
112112
7FDE65A2257E5DCA002AC81F /* UITypeAlias.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7BD765F247CC6920062A6B3 /* UITypeAlias.swift */; };
113113
8407E0942472320800AC5DE8 /* (null) in Sources */ = {isa = PBXBuildFile; };
114+
8B349FE32681E2CE007247F2 /* agora-logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 8B349FE22681E2CE007247F2 /* agora-logo.png */; };
114115
8B98CAA42664914D001B5454 /* AgoraAudioProcessing.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8B98CAA32664914D001B5454 /* AgoraAudioProcessing.mm */; };
115116
A7847F922458062900469187 /* StatisticsInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7847F912458062900469187 /* StatisticsInfo.swift */; };
116117
A7847F942458089E00469187 /* AgoraExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7847F932458089E00469187 /* AgoraExtension.swift */; };
@@ -319,6 +320,7 @@
319320
7FBE1D522576A904005A8619 /* pvc_kernels.metallib */ = {isa = PBXFileReference; lastKnownFileType = "archive.metal-library"; name = pvc_kernels.metallib; path = Pods/AgoraRtcEngine_iOS/AgoraRtcKit.framework/AgoraResources/pvc_kernels.metallib; sourceTree = SOURCE_ROOT; };
320321
7FBE1D532576A904005A8619 /* model.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = model.bundle; path = Pods/AgoraRtcEngine_iOS/AgoraRtcKit.framework/AgoraResources/model.bundle; sourceTree = SOURCE_ROOT; };
321322
846AE4340F81DCC00B6F9543 /* Pods-APIExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-APIExample.release.xcconfig"; path = "Target Support Files/Pods-APIExample/Pods-APIExample.release.xcconfig"; sourceTree = "<group>"; };
323+
8B349FE22681E2CE007247F2 /* agora-logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "agora-logo.png"; sourceTree = "<group>"; };
322324
8B98CAA12664914D001B5454 /* AgoraAudioProcessing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AgoraAudioProcessing.h; sourceTree = "<group>"; };
323325
8B98CAA22664914D001B5454 /* AgoraAudioCriticalSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AgoraAudioCriticalSection.h; sourceTree = "<group>"; };
324326
8B98CAA32664914D001B5454 /* AgoraAudioProcessing.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AgoraAudioProcessing.mm; sourceTree = "<group>"; };
@@ -687,6 +689,7 @@
687689
03BEED09251C4446005E78F4 /* Resources */ = {
688690
isa = PBXGroup;
689691
children = (
692+
8B349FE22681E2CE007247F2 /* agora-logo.png */,
690693
5771636326453E8E0072DE96 /* output.raw */,
691694
7FBE1D532576A904005A8619 /* model.bundle */,
692695
7FBE1D502576A904005A8619 /* pvc_jnqd.bundle */,
@@ -1001,6 +1004,7 @@
10011004
A7CA48C424553CF700507435 /* Popover.storyboard in Resources */,
10021005
03D13BDC2448758B00B599B3 /* LaunchScreen.storyboard in Resources */,
10031006
033A9F57252D89F000BC26E1 /* CustomVideoSourceMediaIO.storyboard in Resources */,
1007+
8B349FE32681E2CE007247F2 /* agora-logo.png in Resources */,
10041008
576BB8EE259B00E100323D43 /* CreateDataStream.storyboard in Resources */,
10051009
033A9F23252D70E400BC26E1 /* JoinChannelVideo.storyboard in Resources */,
10061010
033A9F66252D8B2A00BC26E1 /* VoiceChanger.storyboard in Resources */,

iOS/APIExample/Examples/Basic/JoinChannelVideo/JoinChannelVideo.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,18 @@ class JoinChannelVideoMain: BaseViewController {
8080
bitrate: AgoraVideoBitrateStandard,
8181
orientationMode: orientation))
8282

83+
// setup watermark
84+
if let filepath = Bundle.main.path(forResource: "agora-logo", ofType: "png") {
85+
if let url = URL.init(string: filepath) {
86+
let size = resolution.width / 6
87+
let waterMark = WatermarkOptions()
88+
waterMark.visibleInPreview = true
89+
waterMark.positionInPortraitMode = CGRect(x: 10, y: resolution.height / 2, width: size, height: size)
90+
waterMark.positionInLandscapeMode = CGRect(x: 10, y: resolution.height / 2, width: size, height: size)
91+
agoraKit.addVideoWatermark(url, options: waterMark)
92+
}
93+
}
94+
8395
// set up local video to render your local camera preview
8496
let videoCanvas = AgoraRtcVideoCanvas()
8597
videoCanvas.uid = 0
1.16 KB
Loading

0 commit comments

Comments
 (0)