V2TXLivePusher
encodes local audio/video and publishes the encoded data to a specified URL. It supports any publishing server.
It has the following capabilities:V2TXLivePusher
integrates multiple retouching algorithms (natural & smooth) and color space filters (custom filters are supported).V2TXLivePusher
can adapt automatically to different upstream network conditions by controlling audio/video traffic in real time based on the network conditions of hosts.V2TXLivePusher
supports animated widgets and fine-tuning of facial features, such as eye enlarging, face slimming, and nose reshaping. You need to purchase a YouTu license to use these live streaming effects.- (instancetype)initWithLiveMode:(V2TXLiveMode)liveMode
Parameter | Type | Description |
liveMode | V2TXLiveMode | Publishing protocol: RTMP (default) or ROOM |
V2TXLivePusher
, including publisher status, volume, statistics, warning and error messages, etc.- (void)setObserver:(id<V2TXLivePusherObserver>)observer
Parameter | Type | Description |
observer | V2TXLivePusherObserver | Target object for the publisher’s callbacks. For more information, please see V2TXLivePusherObserver. |
- (V2TXLiveCode)setRenderView:(TXView *)view
Parameter | Type | Description |
view | TXView * | View for local camera preview |
V2TXLIVE_OK
: successful- (V2TXLiveCode)startPush:(NSString *)url
Parameter | Type | Description |
url | NSString * | Publishing URL. Any publishing server is supported. |
V2TXLIVE_OK
: successfulV2TXLIVE_ERROR_INVALID_PARAMETER
: operation failed because the URL is invalid.V2TXLIVE_ERROR_REFUSED
: RTC does not support using the same stream ID for publishing and playback on the same device.- (V2TXLiveCode)stopPush
V2TXLIVE_OK
: successful- (int)isPushing
1
: yes0
: no- (V2TXLiveCode)setVideoQuality:(V2TXLiveVideoEncoderParam *)param;
Parameter | Type | Description |
param | Video encoding parameters |
- (V2TXLiveCode)setRenderRotation:(V2TXLiveRotation)rotation
Parameter | Type | Description |
rotation | Degrees by which the image is rotated. Default value: V2TXLiveRotation0 |
V2TXLIVE_OK
: successfulV2TXLiveRotation
enumerated valuesValue | Description |
V2TXLiveRotation0 | No rotation |
V2TXLiveRotation90 | Rotate 90 degrees clockwise |
V2TXLiveRotation180 | Rotate 180 degrees clockwise |
V2TXLiveRotation270 | Rotate 270 degrees clockwise |
- (V2TXLiveCode)setRenderMirror:(V2TXLiveMirrorType)mirrorType
Parameter | Type | Description |
mirrorType | Mirror mode of the camera. Default value: V2TXLiveMirrorTypeAuto |
V2TXLIVE_OK
: successfulV2TXLiveMirrorType
enumerated valuesValue | Description |
V2TXLiveMirrorTypeAuto | The default value. In this mode, the front camera is mirrored, but the rear camera is not. |
V2TXLiveMirrorTypeEnable | Both the front and rear cameras are mirrored. |
V2TXLiveMirrorTypeDisable | Neither the front nor rear camera is mirrored. |
startVirtualCamera
, startCamera
, and startScreenCapture
, only one can be used to publish data under the same pusher instance. If, for example, startCamera
is called first and then startVirtualCamera
, the SDK will pause the publishing of camera data and start image publishing.- (V2TXLiveCode)startCamera:(BOOL)frontCamera
V2TXLIVE_OK
: successful- (V2TXLiveCode)stopCamera
V2TXLIVE_OK
: successfulstartVirtualCamera
, startCamera
, and startScreenCapture
, only one can be used to publish data under the same pusher instance. If, for example, startCamera
is called first and then startVirtualCamera
, the SDK will pause the publishing of camera data and start image publishing.- (V2TXLiveCode)startVirtualCamera:(TXImage *)image
V2TXLIVE_OK
: successful- (V2TXLiveCode)stopVirtualCamera
V2TXLIVE_OK
: successfulstartVirtualCamera
, startCamera
, and startScreenCapture
, only one can be used to publish data under the same pusher instance. If, for example, startCamera
is called first and then startVirtualCamera
, the SDK will pause the publishing of camera data and start image publishing.enableCustomVideoCapture
to enable custom capturing. sendCustomVideoFrame
to send the screen images captured by Broadcast Upload Extension.- (V2TXLiveCode)startScreenCapture:(NSString *)appGroup
Parameter | Type | Description |
appGroup | NSString * | The App Group ID shared by the host app and Broadcast Upload Extension. It can be set to nil , but setting it as instructed in our documentation will make the feature more reliable. |
V2TXLIVE_OK
: successful- (V2TXLiveCode)stopScreenCapture
V2TXLIVE_OK
: successfulV2TXLIVE_OK
is returned, you can get the screenshot taken in the V2TXLivePusherObserver#onSnapshotComplete:(TXImage *)image
callback.- (V2TXLiveCode)snapshot
V2TXLIVE_OK
: successfulV2TXLIVE_ERROR_REFUSED
: failed to take a screenshot because publishing has stopped.- (V2TXLiveCode)setWatermark:(TXImage *)image x:(float)x y:(float)y scale:(float)scale
Parameter | Type | Description |
image | TXImage * | Watermark image. If this parameter is null , it means watermarking is disabled. |
x | float | Horizontal coordinate of the watermark |
y | float | Vertical coordinate of the watermark |
scale | float | Scale ratio of the watermark image |
- (V2TXLiveCode)setEncoderMirror:(BOOL)mirror
Parameter | Type | Description |
mirror | BOOL | Whether to mirror encoded images. Default value: NO |
- (V2TXLiveCode)enableCustomVideoCapture:(BOOL)enable
Parameter | Type | Description |
enable | BOOL | Whether to enable custom capturing. Default value: NO |
- (V2TXLiveCode)sendCustomVideoFrame:(V2TXLiveVideoFrame *)videoFrame
Parameter | Type | Description |
videoFrame | V2TXLiveVideoFrame * | Video frames sent to the SDK |
V2TXLIVE_OK
: successfulV2TXLIVE_ERROR_INVALID_PARAMETER
: operation failed because the video data is invalid.V2TXLIVE_ERROR_REFUSED
: failed. You must call enableCustomVideoCapture
to enable custom video capturing first.- (V2TXLiveCode)enableCustomVideoProcess:(BOOL)enable pixelFormat:(V2TXLivePixelFormat)pixelFormat bufferType:(V2TXLiveBufferType)bufferType
Parameter | Type | Description |
enable | BOOL | Whether to enable custom video processing. Default value: NO |
pixelFormat | V2TXLivePixelFormat | Pixel format of video frames |
bufferType | V2TXLiveBufferType | Buffer type of video data |
V2TXLivePixelFormat
enumerated valuesValue | Description |
V2TXLivePixelFormatUnknown | Unknown |
V2TXLivePixelFormatI420 | YUV420P (I420) |
V2TXLivePixelFormatTexture2D | OpenGL 2D texture |
V2TXLiveBufferType
enumerated valuesValue | Description |
V2TXLiveBufferTypeUnknown | Unknown |
V2TXLiveBufferTypeByteBuffer | DirectBuffer , which carries buffers in the format of I420 and others and is used at the native layer. |
V2TXLiveBufferTypeByteArray | byte[] , which carries buffers in the format of I420 and others and is used at the Java layer. |
V2TXLiveBufferTypeTexture | Texture ID, which allows direct operation. It delivers the best performance and has the smallest impact on video quality. |
onReceiveSeiMessage
callback in V2TXLivePlayerObserver.- (V2TXLiveCode)sendSeiMessage:(int)payloadType data:(NSData *)data;
Parameter | Type | Description |
payloadType | int | Data type. Valid values: 5 , 242 (recommended) |
data | NSData * | Data to send |
V2TXLIVE_OK
: successfulTXBeautyManager
:- (TXBeautyManager *)getBeautyManager
- (V2TXLiveCode)startMicrophone
V2TXLIVE_OK
: successful- (V2TXLiveCode)stopMicrophone
V2TXLIVE_OK
: successful- (V2TXLiveCode)setAudioQuality:(V2TXLiveAudioQuality)quality
Parameter | Type | Description |
quality | V2TXLiveAudioQuality | Audio quality |
V2TXLiveAudioQuality
enumerated valuesValue | Description |
V2TXLiveAudioQualitySpeech | Speech. Audio sample rate: 16 kHz; sound channel: mono; bitrate: 16 Kbps This is designed for speech-based call scenarios such as online conferencing and audio call. |
V2TXLiveAudioQualityDefault | Default. Audio sample rate: 48 kHz; sound channel: mono; bitrate: 50 Kbps This is the default audio quality of the SDK and is recommended. |
V2TXLiveAudioQualityMusic | Music. Audio sample rate: 48 kHz; sound channel: dual; bitrate: 128 Kbps This is designed for music-oriented scenarios with hi-fi requirements, such as karaoke and live music streaming. |
V2TXLIVE_OK
: successfulV2TXLIVE_ERROR_REFUSED
: you cannot change audio quality settings when streams are being published.V2TXLivePusherObserver#onMicrophoneVolumeUpdate:(NSInteger)volume
callback.- (V2TXLiveCode)enableVolumeEvaluation:(NSInteger)intervalMs;
Parameter | Type | Description |
intervalMs | NSInteger | Interval (ms) for triggering the onMicrophoneVolumeUpdate callback. The minimum interval allowed is 100 ms. If the value is 0 (default) or smaller, the callback is disabled. 300 is recommended. |
V2TXLIVE_OK
: successfulTXAudioEffectManager
:- (TXAudioEffectManager *)getAudioEffectManager
TXDeviceManager
:- (TXDeviceManager *)getDeviceManager;
V2TXLivePusher
.- (V2TXLiveCode)setProperty:(NSString *)key value:(NSObject *)value
Parameter | Type | Description |
key | NSString * | Key of the advanced API to call |
value | NSObject * | Parameters required by the advanced API |
V2TXLIVE_OK
: successfulV2TXLIVE_ERROR_INVALID_PARAMETER
: operation failed because key
is empty.- (V2TXLiveCode)setMixTranscodingConfig:(V2TXLiveTranscodingConfig *)config
Parameter | Type | Description |
config | V2TXLiveTranscodingConfig * | On-Cloud MixTranscoding configuration |
Value | Description |
V2TXLiveBufferTypeUnknown | Unknown |
V2TXLiveBufferTypeByteBuffer | DirectBuffer , which carries buffers in the format of I420 and others and is used at the native layer. |
V2TXLiveBufferTypeByteArray | byte[] , which carries buffers in the format of I420 and others and is used at the Java layer. |
V2TXLiveBufferTypeTexture | Texture ID, which allows direct operation. It delivers the best performance and has the smallest impact on video quality. |
- (void)showDebugView:(BOOL)isShow
Parameter | Type | Description |
isShow | BOOL | Whether to show the debug view. Default value: NO |
Was this page helpful?