# LocalVideoTrack 类 (/zh-CN/api-reference/rtc-server-sdk/go-api/localvideotrack.go)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<span className="index-desc-localvideotrack">`LocalVideoTrack` 类提供本地视频轨道的基本方法。你可以通过 [`PublishVideo`](/zh-CN/api-reference/rtc-server-sdk/go-api/localuser.go#publishvideo) 方法发布一个或多个视频轨道。</span>

<a id="newcustomvideotrackframe"></a>
## NewCustomVideoTrackFrame [#newcustomvideotrackframe]

```go
func NewCustomVideoTrackFrame(videoSender *VideoFrameSender) *LocalVideoTrack {
    cTrack := C.agora_service_create_custom_video_track_frame(agoraService.service, videoSender.cSender)
    if cTrack == nil {
        return nil
    }
    return &LocalVideoTrack{
        cTrack: cTrack,
    }
}
```

<span className="index-desc-newcustomvideotrackframe">创建本地视频轨道对象，包含一个发送 YUV 格式视频数据的视频源。该轨道对象可用于发送 YUV 格式视频数据。</span>

#### 参数 [#参数]

| 参数                | 描述                                                                 |
|---------------------|----------------------------------------------------------------------|
| `videoSender`       | YUV 格式视频源对象。详见 [`VideoFrameSender`](/zh-CN/api-reference/rtc-server-sdk/go-api/videoframesender.go#videoframesender)。 |

#### 返回值 [#返回值]

- `LocalVideoTrack` 对象: 方法调用成功。
- `nil`: 方法调用失败。

<a id="newcustomvideotrackencoded"></a>
## NewCustomVideoTrackEncoded [#newcustomvideotrackencoded]

```python
func NewCustomVideoTrackEncoded(videoSender *VideoEncodedImageSender, senderOptions *VideoEncodedImageSenderOptions) *LocalVideoTrack {
    cSenderOptions := C.sender_options{}
    cptrSenderOptions := &cSenderOptions
    if senderOptions != nil {
        cSenderOptions.cc_mode = C.int(senderOptions.CcMode)
        cSenderOptions.codec_type = C.int(senderOptions.CodecType)
        cSenderOptions.target_bitrate = C.int(senderOptions.TargetBitrate)
    } else {
        cptrSenderOptions = nil
    }
    cTrack := C.agora_service_create_custom_video_track_encoded(agoraService.service, videoSender.cSender, cptrSenderOptions)
    if cTrack == nil {
        return nil
    }
    return &LocalVideoTrack{
        cTrack: cTrack,
    }
}
```

<span className="index-desc-newcustomvideotrackencoded">创建本地视频轨道对象，包含一个发送编码视频数据的视频源。该轨道对象可用于发送已编码的视频数据，例如 H.264 或 VP8 格式的编码数据。</span>

#### 参数 [#参数-1]

| 参数                       | 描述                                                                 |
|----------------------------|----------------------------------------------------------------------|
| `videoSender` | 发送编码视频数据的视频源。详见 [`VideoEncodedImageSender`](/zh-CN/api-reference/rtc-server-sdk/go-api/videoencodedimagesender.go)。    |
| `senderOptions`                  | 视频轨道设置。详见 [`VideoEncodedImageSenderOptions`](/zh-CN/api-reference/rtc-server-sdk/go-api/apidatatype.go#senderoptions)。              |

#### 返回值 [#返回值-1]

- `LocalVideoTrack` 对象: 方法调用成功。
- `nil`: 方法调用失败。

<a id="setenabled"></a>
## SetEnabled [#setenabled]

```go
func (track *LocalVideoTrack) SetEnabled(enable bool) {
    if track.cTrack == nil {
        return
    }
    cEnable := 0
    if enable {
        cEnable = 1
    }
    C.agora_local_video_track_set_enabled(track.cTrack, C.int(cEnable))
}
```

<span className="index-desc-setenabled">开启或关闭本地视频轨道。本地视频轨道开启之后，SDK 可以采集、处理和编码本地视频。</span>

#### 参数 [#参数-2]

| 参数 | 描述 |
| --- | --- |
| `enable` | [localvideotrack-go-html-0-1-1 details](#table-slot-localvideotrack-go-html-0-1-1) |

<a id="table-slot-localvideotrack-go-html-0-1-1"></a>

**localvideotrack-go-html-0-1-1 details**

开启或关闭本地视频轨道：

- `false`: 关闭本地视频轨道。
- `true`: 开启本地视频轨道，

<a id="setvideoencoderconfiguration"></a>
## SetVideoEncoderConfiguration [#setvideoencoderconfiguration]

```go
func (track *LocalVideoTrack) SetVideoEncoderConfiguration(cfg *VideoEncoderConfiguration) int {
    cCfg := C.struct__video_encoder_config{}
    C.memset(unsafe.Pointer(&cCfg), 0, C.sizeof_struct__video_encoder_config)
    cCfg.codec_type = C.int(cfg.CodecType)
    cCfg.dimensions.width = C.int(cfg.Width)
    cCfg.dimensions.height = C.int(cfg.Height)
    cCfg.frame_rate = C.int(cfg.Framerate)
    cCfg.bitrate = C.int(cfg.Bitrate * 1000)
    cCfg.min_bitrate = C.int(cfg.MinBitrate * 1000)
    cCfg.orientation_mode = C.int(cfg.OrientationMode)
    cCfg.degradation_preference = C.int(cfg.DegradePreference)
    return int(C.agora_local_video_track_set_video_encoder_config(track.cTrack, &cCfg))
}
```

<span className="index-desc-setvideoencoderconfiguration">设置视频编码属性。</span>

#### 参数 [#参数-3]

| 参数   | 描述 |
|--------|------|
| `cfg`  | 视频编码参数配置，详见 [`VideoEncoderConfiguration`](/zh-CN/api-reference/rtc-server-sdk/go-api/apidatatype.go#videoencoderconfiguration)。 |

#### 返回值 [#返回值-2]

- 0: 方法调用成功。
- < 0: 方法调用失败。
