diff --git a/lib/player.js b/lib/player.js index 584a9e1944..3a628b1d07 100644 --- a/lib/player.js +++ b/lib/player.js @@ -5972,6 +5972,13 @@ shaka.Player = class extends shaka.util.FakeEventTarget { references.push(reference); } + let segmentMimeType = mimeType; + if (references.length) { + segmentMimeType = await shaka.net.NetworkingUtils.getMimeType( + references[0].getUris()[0], + this.networkingEngine_, this.config_.manifest.retryParameters); + } + /** @type {shaka.extern.Stream} */ const stream = { id: this.nextExternalStreamId_++, @@ -5979,7 +5986,7 @@ shaka.Player = class extends shaka.util.FakeEventTarget { groupId: null, createSegmentIndex: () => Promise.resolve(), segmentIndex: new shaka.media.SegmentIndex(references), - mimeType: mimeType || '', + mimeType: segmentMimeType || '', codecs: '', kind: '', encrypted: false, @@ -6003,7 +6010,7 @@ shaka.Player = class extends shaka.util.FakeEventTarget { external: true, fastSwitching: false, fullMimeTypes: new Set([shaka.util.MimeUtils.getFullType( - mimeType || '', '')]), + segmentMimeType || '', '')]), }; if (this.loadMode_ == shaka.Player.LoadMode.SRC_EQUALS) { diff --git a/test/player_integration.js b/test/player_integration.js index b919baef81..6eba374cc6 100644 --- a/test/player_integration.js +++ b/test/player_integration.js @@ -1341,6 +1341,8 @@ describe('Player', () => { expect(player.getImageTracks()).toEqual([newTrack]); + expect(newTrack.mimeType).toBe('image/jpeg'); + const thumbnail1 = await player.getThumbnails(newTrack.id, 0); expect(thumbnail1.startTime).toBe(0); expect(thumbnail1.duration).toBe(5); @@ -1379,6 +1381,8 @@ describe('Player', () => { expect(player.getImageTracks()).toEqual([newTrack]); + expect(newTrack.mimeType).toBe('image/jpeg'); + const thumbnail1 = await player.getThumbnails(newTrack.id, 0); expect(thumbnail1.startTime).toBe(0); expect(thumbnail1.duration).toBe(5); diff --git a/test/player_src_equals_integration.js b/test/player_src_equals_integration.js index be27d27cb1..76d0448ddd 100644 --- a/test/player_src_equals_integration.js +++ b/test/player_src_equals_integration.js @@ -453,6 +453,8 @@ describe('Player Src Equals', () => { expect(player.getImageTracks()).toEqual([newTrack]); + expect(newTrack.mimeType).toBe('image/jpeg'); + const thumbnail1 = await player.getThumbnails(newTrack.id, 0); expect(thumbnail1.startTime).toBe(0); expect(thumbnail1.duration).toBe(5); @@ -491,6 +493,8 @@ describe('Player Src Equals', () => { expect(player.getImageTracks()).toEqual([newTrack]); + expect(newTrack.mimeType).toBe('image/jpeg'); + const thumbnail1 = await player.getThumbnails(newTrack.id, 0); expect(thumbnail1.startTime).toBe(0); expect(thumbnail1.duration).toBe(5);