1# Interface (MediaSource) 2<!--Kit: Media Kit--> 3<!--Subsystem: Multimedia--> 4<!--Owner: @wang-haizhou6--> 5<!--Designer: @HmQQQ--> 6<!--Tester: @xchaosioda--> 7<!--Adviser: @zengyawen--> 8 9> **NOTE** 10> 11> - The initial APIs of this module are supported since API version 6. Newly added APIs will be marked with a superscript to indicate their earliest API version. 12> - The initial APIs of this interface are supported since API version 12. 13 14The MediaSource class defines the media data information, which is from [createMediaSourceWithUrl](arkts-apis-media-f.md#mediacreatemediasourcewithurl12). 15 16**System capability**: SystemCapability.Multimedia.Media.Core 17 18## Modules to Import 19 20```ts 21import { media } from '@kit.MediaKit'; 22``` 23 24## setMimeType<sup>12+</sup> 25 26setMimeType(mimeType: AVMimeTypes): void 27 28Sets the MIME type to help the player process extended media sources. 29 30**Atomic service API**: This API can be used in atomic services since API version 12. 31 32**System capability**: SystemCapability.Multimedia.Media.Core 33 34**Parameters** 35 36| Name | Type | Mandatory| Description | 37| -------- | -------- | ---- | -------------------- | 38| mimeType | [AVMimeTypes](arkts-apis-media-e.md#avmimetypes12) | Yes | MIME type.| 39 40## setMediaResourceLoaderDelegate<sup>18+</sup> 41 42setMediaResourceLoaderDelegate(resourceLoader: MediaSourceLoader): void 43 44Sets a MediaSourceLoader object, which is used to help the player request media data. 45 46**Atomic service API**: This API can be used in atomic services since API version 18. 47 48**System capability**: SystemCapability.Multimedia.Media.Core 49 50**Parameters** 51 52| Name | Type | Mandatory| Description | 53| -------- | -------- | ---- | -------------------- | 54| resourceLoader | [MediaSourceLoader](arkts-apis-media-i.md#mediasourceloader18) | Yes | MediaSourceLoader object used to obtain media data for the player.| 55 56**Example** 57 58```ts 59import { HashMap } from '@kit.ArkTS'; 60import { media } from '@kit.MediaKit'; 61 62let headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"}; 63let mediaSource : media.MediaSource = media.createMediaSourceWithUrl("http://xxx", headers); 64let uuid: number = 1; 65let requests: HashMap<number, media.MediaSourceLoadingRequest> = new HashMap(); 66 67let sourceOpenCallback: media.SourceOpenCallback = (request: media.MediaSourceLoadingRequest) => { 68 console.log(`Opening resource: ${request.url}`); 69 // Open the resource and return a unique handle, ensuring the mapping between the UUID and request. 70 uuid += 1; 71 requests.set(uuid, request); 72 return uuid; 73}; 74 75let sourceReadCallback: media.SourceReadCallback = (uuid: number, requestedOffset: number, requestedLength: number) => { 76 console.log(`Reading resource with handle ${uuid}, offset: ${requestedOffset}, length: ${requestedLength}`); 77 // Check whether the UUID is valid and store the read request. Avoid blocking the request while pushing data and header information. 78}; 79 80let sourceCloseCallback: media.SourceCloseCallback = (uuid: number) => { 81 console.log(`Closing resource with handle ${uuid}`); 82 // Clear resources related to the current UUID. 83 requests.remove(uuid); 84}; 85 86// Implemented by applications as required. 87let resourceLoader: media.MediaSourceLoader = { 88 open: sourceOpenCallback, 89 read: sourceReadCallback, 90 close: sourceCloseCallback 91}; 92 93mediaSource.setMediaResourceLoaderDelegate(resourceLoader); 94``` 95