LiveTranscoding
Transcoding configurations for Media Push.
public class LiveTranscoding {
public enum AudioSampleRateType {
TYPE_32000(32000),
TYPE_44100(44100),
TYPE_48000(48000);
private int value;
private AudioSampleRateType(int v) {
value = v;
}
public static int getValue(AudioSampleRateType type) {
return type.value;
}
}
public enum VideoCodecProfileType {
BASELINE(66),
MAIN(77),
HIGH(100);
private int value;
private VideoCodecProfileType(int v) {
value = v;
}
public static int getValue(VideoCodecProfileType type) {
return type.value;
}
}
public enum AudioCodecProfileType {
LC_AAC(0),
HE_AAC(1),
HE_AAC(1);
HE_AAC_V2(2);
private int value;
private AudioCodecProfileType(int v) {
value = v;
}
public static int getValue(AudioCodecProfileType type) {
return type.value;
}
}
public enum VideoCodecType {
H264(1),
H265(2);
private int value;
private VideoCodecType(int v) {
value = v;
}
public static int getValue(VideoCodecType type) {
return type.value;
}
}
public int width;
public int height;
public int videoBitrate;
public int videoFramerate;
public boolean lowLatency;
@Deprecated public boolean lowLatency;
public int videoGop;
private ArrayList<AgoraImage> watermarkList;
public void addWatermark(AgoraImage watermark) {
if (watermarkList == null) {
watermarkList = new ArrayList<AgoraImage>();
}
watermarkList.add(watermark);
}
public boolean removeWatermark(AgoraImage watermark) {
if (watermarkList == null) {
return false;
}
return watermarkList.remove(watermark);
}
public ArrayList<AgoraImage> getWatermarkList() {
return watermarkList;
}
private ArrayList<AgoraImage> backgroundImageList;
public void addBackgroundImage(AgoraImage backgroundImage) {
if (backgroundImageList == null) {
backgroundImageList = new ArrayList<AgoraImage>();
}
backgroundImageList.add(backgroundImage);
}
public boolean removeBackgroundImage(AgoraImage backgroundImage) {
if (backgroundImageList == null) {
return false;
}
return backgroundImageList.remove(backgroundImage);
}
public ArrayList<AgoraImage> getBackgroundImageList() {
return backgroundImageList;
}
public AudioSampleRateType audioSampleRate;
public int audioBitrate;
public int audioChannels;
public AudioCodecProfileType audioCodecProfile;
public VideoCodecProfileType videoCodecProfile;
public VideoCodecType videoCodecType;
@Deprecated public int userCount;
@Deprecated public int backgroundColor;
public String userConfigExtraInfo;
public String metadata;
@Deprecated public String metadata;
private Map<Integer, TranscodingUser> transcodingUsers;
private Map<String, Boolean> advancedFeatures;
public void setAdvancedFeatures(String featureName, Boolean opened) {
advancedFeatures.put(featureName, opened);
}
public Map<String, Boolean> getAdvancedFeatures() {
return advancedFeatures;
}
public static class TranscodingUser {
public int uid;
public String userId;
public String userId;
public int x;
public int y;
public int width;
public int height;
public int zOrder;
public float alpha;
public int audioChannel;
public TranscodingUser() {
alpha = 1;
}
}
public LiveTranscoding() {
width = 360;
height = 640;
videoBitrate = 400;
videoCodecProfile = VideoCodecProfileType.HIGH;
videoCodecType = VideoCodecType.H264;
videoGop = 30;
videoFramerate = 15;
lowLatency = false;
audioSampleRate = AudioSampleRateType.TYPE_44100;
audioBitrate = 48;
audioChannels = 1;
audioCodecProfile = AudioCodecProfileType.LC_AAC;
transcodingUsers = new HashMap<>();
advancedFeatures = new HashMap<>();
backgroundColor = 0xFF000000;
userConfigExtraInfo = null;
metadata = null;
}
public int addUser(TranscodingUser user) {
if (user == null || user.uid == 0) {
return -Constants.ERR_INVALID_ARGUMENT;
}
transcodingUsers.put(user.uid, user);
userCount = transcodingUsers.size();
return Constants.ERR_OK;
}
public final ArrayList<TranscodingUser> getUsers() {
Collection<TranscodingUser> values = transcodingUsers.values();
return new ArrayList<>(values);
}
public void setUsers(ArrayList<TranscodingUser> users) {
transcodingUsers.clear();
if (users != null) {
for (TranscodingUser user : users) {
transcodingUsers.put(user.uid, user);
}
}
userCount = transcodingUsers.size();
}
public void setUsers(Map<Integer, TranscodingUser> users) {
transcodingUsers.clear();
if (users != null) {
transcodingUsers.putAll(users);
}
userCount = transcodingUsers.size();
}
public int removeUser(int uid) {
if (!transcodingUsers.containsKey(uid))
return -Constants.ERR_INVALID_ARGUMENT;
transcodingUsers.remove(uid);
userCount = transcodingUsers.size();
return Constants.ERR_OK;
}
public int getUserCount() {
return transcodingUsers.size();
}
public int getBackgroundColor() {
return this.backgroundColor;
}
public void setBackgroundColor(int color) {
this.backgroundColor = color;
}
public void setBackgroundColor(int red, int green, int blue) {
this.backgroundColor = (red << 16) | (green << 8) | (blue << 0);
}
@Deprecated
public int getRed() {
return (backgroundColor >> 16) & 0x0ff;
}
@Deprecated
public int getGreen() {
return (backgroundColor >> 8) & 0x0ff;
}
@Deprecated
public int getBlue() {
return backgroundColor & 0x0ff;
}
@Deprecated
public void setRed(int red) {
int green = getGreen();
int blue = getBlue();
this.backgroundColor = (red << 16) | (green << 8) | (blue << 0);
}
@Deprecated
public void setGreen(int green) {
int red = getRed();
int blue = getBlue();
this.backgroundColor = (red << 16) | (green << 8) | (blue << 0);
}
@Deprecated
public void setBlue(int blue) {
int red = getRed();
int green = getGreen();
this.backgroundColor = (red << 16) | (green << 8) | (blue << 0);
}
}
Attributes
- width
-
The width of the video in pixels. The default value is 360.
- When pushing video streams to the CDN, the value range of
widthis [64,1920]. If the value is less than 64, Agora server automatically adjusts it to 64; if the value is greater than 1920, Agora server automatically adjusts it to 1920. - When pushing audio streams to the CDN, set
widthandheightas 0.
- When pushing video streams to the CDN, the value range of
- height
-
The height of the video in pixels. The default value is 640.
- When pushing video streams to the CDN, the value range of
heightis [64,1080]. If the value is less than 64, Agora server automatically adjusts it to 64; if the value is greater than 1080, Agora server automatically adjusts it to 1080. - When pushing audio streams to the CDN, set
widthandheightas 0.
- When pushing video streams to the CDN, the value range of
- videoBitrate
-
The encoding bitrate (Kbps) of the video. This parameter does not need to be set; keeping the default value STANDARD_BITRATE is sufficient. The SDK automatically matches the most suitable bitrate based on the video resolution and frame rate you have set. For the correspondence between video resolution and frame rate, see Video profile.
- videoFramerate
-
Frame rate (fps) of the output video stream set for Media Push. The default value is 15. The value range is (0,30].
Attention: The Agora server adjusts any value over 30 to 30. - lowLatency
-
- Deprecated
- This member is deprecated.
Latency mode:
true: Low latency with unassured quality.false: (Default) High latency with assured quality.
- videoGop
- GOP (Group of Pictures) in fps of the video frames for Media Push. The default value is 30.
- videoCodecProfile
-
Video codec profile type for Media Push. Set it as 66, 77, or 100 (default). See VIDEO_CODEC_PROFILE_TYPE for details.
Attention: If you set this parameter to any other value, Agora adjusts it to the default value. - videoCodecType
- Video codec profile types for Media Push. See VIDEO_CODEC_TYPE_FOR_STREAM.
- transcodingUsers
-
Manages the user layout configuration in the Media Push. Agora supports a maximum of 17 transcoding users in a Media Push channel. See TranscodingUser.
- userConfigExtraInfo
-
Reserved property. Extra user-defined information to send SEI for the H.264/H.265 video stream to the CDN live client. Maximum length: 4096 bytes. For more information on SEI, see SEI-related questions.
- backgroundColor
-
- Deprecated
- Obsolete and not recommended for use. Use instead.
- userCount
-
- Deprecated
- Obsolete and not recommended for use. Use instead.
The number of users in the Media Push. The value range is [0,17].
- metadata
-
- Deprecated
- Obsolete and not recommended for use.
The metadata sent to the CDN client.
- audioSampleRate
-
The audio sampling rate (Hz) of the output media stream. See AUDIO_SAMPLE_RATE_TYPE.
- audioBitrate
-
Bitrate (Kbps) of the audio output stream for Media Push. The default value is 48, and the highest value is 128.
- audioChannels
-
The number of audio channels for Media Push. Agora recommends choosing 1 (mono), or 2 (stereo) audio channels. Special players are required if you choose 3, 4, or 5.
- 1: (Default) Mono.
- 2: Stereo.
- 3: Three audio channels.
- 4: Four audio channels.
- 5: Five audio channels.
- audioCodecProfile
- Audio codec profile type for Media Push. See AUDIO_CODEC_PROFILE_TYPE.
Method
- addBackgroundImage
- Adds a background image. See .
- addUser
- Adds a user for video mixing during the CDN live streaming. See .
- addWatermark
- Adds a watermark. See .
- getAdvancedFeatures
- Gets the status of the advanced features of streaming with transcoding. See .
- getBackgroundColor
- Gets the background color in hex. See .
- getBackgroundImageList
- Gets the list of background images. See .
- getBlue
-
- Deprecated
- Obsolete and not recommended for use.
Gets the background color's blue component. See .
- getGreen
-
- Deprecated
- Obsolete and not recommended for use.
Gets the background color's green component. See .
- getRed
-
- Deprecated
- Obsolete and not recommended for use.
Gets the background color's red component. See .
- getUserCount
- Gets the number of users transcoded in the CDN live streaming. See .
- getUsers
- Gets the user list in the CDN live streaming. See .
- getWatermarkList
- Gets the watermark list. See .
- removeBackgroundImage
- Removes a background image from the background image list. See .
- removeUser
- Removes a user from video mixing during the CDN live streaming. See .
- removeWatermark
- Removes a watermark from the watermark list. See .
- setAdvancedFeatures
- Sets whether to enable the advanced features of streaming with transcoding. See .
- setBackgroundColor [1/2]
- Sets the background color of the CDN live stream in the format of RGB hex. See .
- setBackgroundColor [2/2]
- Sets the background color in RGB format. See .
- setBlue
-
- Deprecated
- Obsolete and not recommended for use.
Sets the background color's blue component. See .
- setGreen
-
- Deprecated
- Obsolete and not recommended for use.
Sets the background color's green component. See .
- setRed
-
- Deprecated
- Obsolete and not recommended for use.
Sets the background color's red component. See .
- setUsers [1/2]
- Sets the users in batches in the CDN live streaming. See .
- setUsers [2/2]
- Sets the users in batches in the CDN live streaming. See .