mirror of
https://github.com/LukeHagar/plexjava.git
synced 2025-12-06 20:47:45 +00:00
* `plex-api.libraryPlaylists.addPlaylistItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.libraryPlaylists.clearPlaylistItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.libraryCollections.moveCollectionItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.libraryCollections.deleteCollectionItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.libraryCollections.addCollectionItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.content.getSonicallySimilar()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.butler.stopTask()`: `request` **Changed** **Breaking** ⚠️ * `plex-api.butler.startTask()`: `request` **Changed** **Breaking** ⚠️ * `plex-api.content.getSonicPath()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.downloadQueue.getItemDecision()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.hubs.getAllHubs()`: * `request.onlyTransient` **Changed** * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.hubs.getContinueWatching()`: `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.hubs.getPromotedHubs()`: `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.hubs.getMetadataHubs()`: * `request.onlyTransient` **Changed** * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.hubs.getPostplayHubs()`: * `request.onlyTransient` **Changed** * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.hubs.getRelatedHubs()`: * `request.onlyTransient` **Changed** * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.hubs.getSectionHubs()`: * `request.onlyTransient` **Changed** * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.content.getAllLeaves()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.content.listContent()`: * `request` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.search.searchHubs()`: `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.content.getAlbums()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.getLibraryItems()`: * `request.mediaQuery` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.ingestTransientItem()`: * `request` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.getLibraryMatches()`: * `request` **Changed** **Breaking** ⚠️ * `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.content.getMetadataItem()`: * `request` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.getSections()`: `response.mediacontainer.directory.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.addSection()`: * `request` **Changed** * `response.mediacontainer.directory.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.getTags()`: * `request.type` **Changed** **Breaking** ⚠️ * `plex-api.content.getCollectionItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.getAllItemLeaves()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.status.listSessions()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.playQueue.movePlayQueueItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.getExtras()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.playQueue.deletePlayQueueItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.playQueue.unshuffle()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.listMatches()`: * `request.manual` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.listSonicallySimilar()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.playQueue.shuffle()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.getRelatedItems()`: `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.listSimilar()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.playQueue.resetPlayQueue()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.getItemTree()`: `response.mediacontainer.metadataItem.[]` **Changed** **Breaking** ⚠️ * `plex-api.playQueue.clearPlayQueue()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.playQueue.addToPlayQueue()`: * `request.next` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.getCommon()`: * `request.mediaQuery` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.getPerson()`: `response.mediacontainer.directory.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.listPersonMedia()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.playQueue.getPlayQueue()`: * `request` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.getLibraryDetails()`: * `request.includeDetails` **Changed** * `response.mediacontainer.directory.[]` **Changed** **Breaking** ⚠️ * `plex-api.libraryPlaylists.movePlaylistItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.autocomplete()`: * `request.mediaQuery` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.library.getCollections()`: * `request.mediaQuery` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.libraryPlaylists.getPlaylistGeneratorItems()`: `response.mediacontainer.metadata` **Changed** **Breaking** ⚠️ * `plex-api.libraryPlaylists.deletePlaylistItem()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.search.voiceSearchHubs()`: * `request.type` **Changed** **Breaking** ⚠️ * `response.mediacontainer.hub.[].metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.libraryPlaylists.createPlaylist()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.playlist.getPlaylistItems()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.playlist.getPlaylist()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.playlist.listPlaylists()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.collections.createCollection()`: * `request.type` **Changed** **Breaking** ⚠️ * `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.dvRs.tuneChannel()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.liveTv.getSessions()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.liveTv.getLiveTvSession()`: `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.transcoder.makeDecision()`: * `request` **Changed** * `response.mediacontainer.metadata.[]` **Changed** **Breaking** ⚠️ * `plex-api.subscriptions.getAllSubscriptions()`: * `request` **Changed** * `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** ⚠️ * `plex-api.subscriptions.createSubscription()`: `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** ⚠️ * `plex-api.subscriptions.getScheduledRecordings()`: `response.mediacontainer.mediaGrabOperation.[].metadata` **Changed** **Breaking** ⚠️ * `plex-api.subscriptions.getTemplate()`: `response.mediacontainer.subscriptionTemplate.[].mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** ⚠️ * `plex-api.subscriptions.getSubscription()`: * `request` **Changed** * `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** ⚠️ * `plex-api.subscriptions.editSubscriptionPreferences()`: `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** ⚠️ * `plex-api.subscriptions.reorderSubscription()`: `response.mediacontainer.mediaSubscription.[].mediaGrabOperation.[].metadata` **Changed** **Breaking** ⚠️ * `plex-api.library.addSubtitles()`: `request` **Changed** * `plex-api.libraryPlaylists.uploadPlaylist()`: * `request.force` **Changed** * `plex-api.transcoder.transcodeSubtitles()`: `request` **Changed** * `plex-api.transcoder.startTranscodeSession()`: `request` **Changed** * `plex-api.library.getMediaPart()`: * `request.download` **Changed** * `plex-api.library.detectIntros()`: * `request.force` **Changed** * `plex-api.library.getSectionImage()`: * `request.mediaQuery` **Changed** * `plex-api.library.deleteMediaItem()`: * `request.proxy` **Changed** * `plex-api.library.refreshItemsMetadata()`: * `request.markUpdated` **Changed** * `plex-api.authentication.postUsersSignInData()`: **Added** * `plex-api.authentication.getTokenDetails()`: **Added** * `plex-api.library.detectCredits()`: `request` **Changed** * `plex-api.library.setStreamSelection()`: * `request.allParts` **Changed** * `plex-api.library.updateItems()`: * `request.field.locked` **Changed** * `plex-api.playQueue.createPlayQueue()`: `request` **Changed** * `plex-api.library.deleteLibrarySection()`: * `request.async` **Changed** * `plex-api.library.getAugmentationStatus()`: * `request.wait` **Changed** * `plex-api.transcoder.transcodeImage()`: `request` **Changed** * `plex-api.devices.modifyDevice()`: * `request.enabled` **Changed** * `plex-api.library.detectVoiceActivity()`: `request` **Changed** * `plex-api.library.getStream()`: * `request.autoAdjustSubtitle` **Changed** * `plex-api.library.startBifGeneration()`: * `request.force` **Changed** * `plex-api.library.getFirstCharacters()`: * `request.mediaQuery` **Changed** * `plex-api.ultraBlur.getImage()`: * `request.noise` **Changed** * `plex-api.library.generateThumbs()`: * `request.force` **Changed** * `plex-api.updater.applyUpdates()`: `request` **Changed** * `plex-api.updater.checkUpdates()`: * `request.download` **Changed** * `plex-api.library.deleteMetadataItem()`: * `request.proxy` **Changed** * `plex-api.library.optimizeDatabase()`: * `request.async` **Changed** * `plex-api.library.refreshSection()`: * `request.force` **Changed** * `plex-api.hubs.updateHubVisibility()`: `request` **Changed** * `plex-api.hubs.createCustomHub()`: `request` **Changed** * `plex-api.downloadQueue.addDownloadQueueItems()`: `request` **Changed** * `plex-api.timeline.report()`: `request` **Changed** * `plex-api.general.getSourceConnectionInformation()`: * `request.refresh` **Changed** * `plex-api.plex.getServerResources()`: **Added** * `plex-api.users.getUsers()`: **Added**
63 lines
20 KiB
Markdown
63 lines
20 KiB
Markdown
# Stream
|
|
|
|
`Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization).
|
|
|
|
|
|
|
|
## Fields
|
|
|
|
| Field | Type | Required | Description | Example |
|
|
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- |
|
|
| `default_` | *Optional\<Boolean>* | :heavy_minus_sign: | Indicates if this stream is default. | true |
|
|
| `audioChannelLayout` | *Optional\<String>* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) |
|
|
| `channels` | *Optional\<Integer>* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 |
|
|
| `bitDepth` | *Optional\<Integer>* | :heavy_minus_sign: | Bit depth of the video stream. | 10 |
|
|
| `doviblCompatID` | *Optional\<Integer>* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 |
|
|
| `doviblPresent` | *Optional\<Boolean>* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true |
|
|
| `dovielPresent` | *Optional\<Boolean>* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false |
|
|
| `doviLevel` | *Optional\<Integer>* | :heavy_minus_sign: | Dolby Vision level. | 6 |
|
|
| `doviPresent` | *Optional\<Boolean>* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true |
|
|
| `doviProfile` | *Optional\<Integer>* | :heavy_minus_sign: | Dolby Vision profile. | 8 |
|
|
| `dovirpuPresent` | *Optional\<Boolean>* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true |
|
|
| `doviVersion` | *Optional\<String>* | :heavy_minus_sign: | Dolby Vision version. | 1.0 |
|
|
| `bitrate` | *Optional\<Integer>* | :heavy_minus_sign: | Bitrate of the stream. | 24743 |
|
|
| `canAutoSync` | *Optional\<Boolean>* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false |
|
|
| `chromaLocation` | *Optional\<String>* | :heavy_minus_sign: | Chroma sample location. | topleft |
|
|
| `chromaSubsampling` | *Optional\<String>* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 |
|
|
| `codedHeight` | *Optional\<Integer>* | :heavy_minus_sign: | Coded video height. | 1608 |
|
|
| `codedWidth` | *Optional\<Integer>* | :heavy_minus_sign: | Coded video width. | 3840 |
|
|
| `closedCaptions` | *Optional\<Boolean>* | :heavy_minus_sign: | N/A | true |
|
|
| `codec` | *String* | :heavy_check_mark: | Codec used by the stream. | hevc |
|
|
| `colorPrimaries` | *Optional\<String>* | :heavy_minus_sign: | Color primaries used. | bt2020 |
|
|
| `colorRange` | *Optional\<String>* | :heavy_minus_sign: | Color range (e.g., tv). | tv |
|
|
| `colorSpace` | *Optional\<String>* | :heavy_minus_sign: | Color space. | bt2020nc |
|
|
| `colorTrc` | *Optional\<String>* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 |
|
|
| `displayTitle` | *String* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) |
|
|
| `extendedDisplayTitle` | *Optional\<String>* | :heavy_minus_sign: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) |
|
|
| `frameRate` | *Optional\<Float>* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 |
|
|
| `hasScalingMatrix` | *Optional\<Boolean>* | :heavy_minus_sign: | N/A | false |
|
|
| `height` | *Optional\<Integer>* | :heavy_minus_sign: | Height of the video stream. | 1602 |
|
|
| `id` | *int* | :heavy_check_mark: | Unique stream identifier. | 1002625 |
|
|
| `index` | *Optional\<Integer>* | :heavy_minus_sign: | Index of the stream. | 0 |
|
|
| `key` | *String* | :heavy_check_mark: | Key to access this stream part. | /library/streams/216389 |
|
|
| `language` | *Optional\<String>* | :heavy_minus_sign: | Language of the stream. | English |
|
|
| `languageCode` | *Optional\<String>* | :heavy_minus_sign: | ISO language code. | eng |
|
|
| `languageTag` | *Optional\<String>* | :heavy_minus_sign: | Language tag (e.g., en). | en |
|
|
| `format` | *Optional\<String>* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt |
|
|
| `headerCompression` | *Optional\<Boolean>* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true |
|
|
| `level` | *Optional\<Integer>* | :heavy_minus_sign: | Video level. | 150 |
|
|
| `original` | *Optional\<Boolean>* | :heavy_minus_sign: | Indicates if this is the original stream. | true |
|
|
| `profile` | *Optional\<String>* | :heavy_minus_sign: | Video profile. | main 10 |
|
|
| `refFrames` | *Optional\<Integer>* | :heavy_minus_sign: | Number of reference frames. | 1 |
|
|
| `samplingRate` | *Optional\<Integer>* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 |
|
|
| `scanType` | *Optional\<String>* | :heavy_minus_sign: | N/A | progressive |
|
|
| `embeddedInVideo` | *Optional\<String>* | :heavy_minus_sign: | N/A | progressive |
|
|
| `selected` | *Optional\<Boolean>* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true |
|
|
| `forced` | *Optional\<Boolean>* | :heavy_minus_sign: | N/A | true |
|
|
| `hearingImpaired` | *Optional\<Boolean>* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true |
|
|
| `dub` | *Optional\<Boolean>* | :heavy_minus_sign: | Indicates if the stream is a dub. | true |
|
|
| `title` | *Optional\<String>* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH |
|
|
| `streamIdentifier` | *Optional\<Integer>* | :heavy_minus_sign: | N/A | 1 |
|
|
| `streamType` | *long* | :heavy_check_mark: | Stream type:<br/> - VIDEO = 1<br/> - AUDIO = 2<br/> - SUBTITLE = 3<br/> | |
|
|
| `width` | *Optional\<Integer>* | :heavy_minus_sign: | Width of the video stream. | 3840 |
|
|
| `additionalProperties` | Map\<String, *Object*> | :heavy_minus_sign: | N/A | | |