# StartTranscodeSessionRequest ## Example Usage ```typescript import { Extension, StartTranscodeSessionLocation, StartTranscodeSessionProtocol, StartTranscodeSessionRequest, StartTranscodeSessionSubtitles, } from "@lukehagar/plexjs/sdk/models/operations"; import { AdvancedSubtitles, BoolInt, TranscodeType } from "@lukehagar/plexjs/sdk/models/shared"; let value: StartTranscodeSessionRequest = { transcodeType: TranscodeType.Video, extension: Extension.M3u8, advancedSubtitles: AdvancedSubtitles.Burn, audioBoost: 50, audioChannelCount: 5, autoAdjustQuality: BoolInt.One, autoAdjustSubtitle: BoolInt.One, directPlay: BoolInt.One, directStream: BoolInt.One, directStreamAudio: BoolInt.One, disableResolutionRotation: BoolInt.One, hasMDE: BoolInt.One, location: StartTranscodeSessionLocation.Wan, mediaBufferSize: 102400, mediaIndex: 0, musicBitrate: 5000, offset: 90.5, partIndex: 0, path: "/library/metadata/151671", peakBitrate: 12000, photoResolution: "1080x1080", protocol: StartTranscodeSessionProtocol.Dash, secondsPerSegment: 5, subtitleSize: 50, subtitles: StartTranscodeSessionSubtitles.Segmented, videoBitrate: 12000, videoQuality: 50, videoResolution: "1080x1080", xPlexClientProfileExtra: "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", xPlexClientProfileName: "generic", }; ``` ## Fields | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `accepts` | [shared.Accepts](../../../sdk/models/shared/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | | `clientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | | `product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | | `version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | | `platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | | `platformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | | `device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | | `model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | | `deviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | | `deviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | | `marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | | `transcodeType` | [shared.TranscodeType](../../../sdk/models/shared/transcodetype.md) | :heavy_check_mark: | Type of transcode media | | | `transcodeSessionId` | *string* | :heavy_minus_sign: | Transcode session UUID | | | `extension` | [operations.Extension](../../../sdk/models/operations/extension.md) | :heavy_check_mark: | Extension
| | | `advancedSubtitles` | [shared.AdvancedSubtitles](../../../sdk/models/shared/advancedsubtitles.md) | :heavy_minus_sign: | Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
| burn | | `audioBoost` | *number* | :heavy_minus_sign: | Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) | 50 | | `audioChannelCount` | *number* | :heavy_minus_sign: | Target video number of audio channels. | 5 | | `autoAdjustQuality` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | Indicates the client supports ABR. | 1 | | `autoAdjustSubtitle` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | Indicates if the server should adjust subtitles based on Voice Activity Data. | 1 | | `directPlay` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct playing the indicated content. | 1 | | `directStream` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the video of the indicated content. | 1 | | `directStreamAudio` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the audio of the indicated content. | 1 | | `disableResolutionRotation` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | Indicates if resolution should be adjusted for orientation. | 1 | | `hasMDE` | [shared.BoolInt](../../../sdk/models/shared/boolint.md) | :heavy_minus_sign: | Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 | 1 | | `location` | [operations.StartTranscodeSessionLocation](../../../sdk/models/operations/starttranscodesessionlocation.md) | :heavy_minus_sign: | Network type of the client, can be used to help determine target bitrate. | wan | | `mediaBufferSize` | *number* | :heavy_minus_sign: | Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. | 102400 | | `mediaIndex` | *number* | :heavy_minus_sign: | Index of the media to transcode. -1 or not specified indicates let the server choose. | 0 | | `musicBitrate` | *number* | :heavy_minus_sign: | Target bitrate for audio only files (in kbps, used to transcode). | 5000 | | `offset` | *number* | :heavy_minus_sign: | Offset from the start of the media (in seconds). | 90.5 | | `partIndex` | *number* | :heavy_minus_sign: | Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode | 0 | | `path` | *string* | :heavy_minus_sign: | Internal PMS path of the media to transcode. | /library/metadata/151671 | | `peakBitrate` | *number* | :heavy_minus_sign: | Maximum bitrate (in kbps) to use in ABR. | 12000 | | `photoResolution` | *string* | :heavy_minus_sign: | Target photo resolution. | 1080x1080 | | `protocol` | [operations.StartTranscodeSessionProtocol](../../../sdk/models/operations/starttranscodesessionprotocol.md) | :heavy_minus_sign: | Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
| dash | | `secondsPerSegment` | *number* | :heavy_minus_sign: | Number of seconds to include in each transcoded segment | 5 | | `subtitleSize` | *number* | :heavy_minus_sign: | Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) | 50 | | `subtitles` | [operations.StartTranscodeSessionSubtitles](../../../sdk/models/operations/starttranscodesessionsubtitles.md) | :heavy_minus_sign: | Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
| Burn | | `videoBitrate` | *number* | :heavy_minus_sign: | Target video bitrate (in kbps). | 12000 | | `videoQuality` | *number* | :heavy_minus_sign: | Target photo quality. | 50 | | `videoResolution` | *string* | :heavy_minus_sign: | Target maximum video resolution. | 1080x1080 | | `xPlexClientProfileExtra` | *string* | :heavy_minus_sign: | See [Profile Augmentations](#section/API-Info/Profile-Augmentations) . | add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash) | | `xPlexClientProfileName` | *string* | :heavy_minus_sign: | Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile. | generic | | `xPlexSessionIdentifier` | *string* | :heavy_minus_sign: | Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) | |