Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Smooth Stream (MSS Parser): Multi-audio track selection bug #3187

Closed
4 of 5 tasks
eowino opened this issue Mar 6, 2020 · 5 comments
Closed
4 of 5 tasks

Smooth Stream (MSS Parser): Multi-audio track selection bug #3187

eowino opened this issue Mar 6, 2020 · 5 comments
Assignees
Labels
MSS Microsoft Smooth Streaming
Milestone

Comments

@eowino
Copy link
Contributor

eowino commented Mar 6, 2020

Environment
  • Link to playable ISMV file: I can't provide one at this time as it belongs to our client.
  • Dash.js version: 3.0.2
  • Browser name/version: Google Chrome Version 80.0.3987.122 (Official Build) (64-bit)
  • OS name/version: macOS Mojave
Description

There seems to be a bug when changing audio tracks for Smooth streams with multiple audio tracks.

When a Smooth stream manifest does not have Name attribute on the StreamIndex element, the internal Id of the AdaptionSet is set to be the Type.

adaptationSet.id = streamIndex.getAttribute('Name') ? streamIndex.getAttribute('Name') : streamIndex.getAttribute('Type');

In the scenario where the URL value for each StreamIndex of type audio is identical, when changing audio tracks, I suspect the player is not capable of internally handling this and playback is subsequently disrupted.

The Smooth Streaming documentation seem to state that the Language attribute is optional.

The following players continued playback when executing the steps below:

Steps to reproduce
  1. Play a stream with multiple audio tracks
  2. Change your current audio track
  3. Player gets into an unrecoverable state and the source is unloaded.
Observed behaviour

Observed Error

Console output
Focused logs:

{
  "type": "MEDIA_ERROR",
  "message": "A media error has occurred. CHUNK_DEMUXER_ERROR_APPEND_FAILED: Append: stream parsing failed. Data size=48773 append_window_start=0 append_window_end=inf (code: 3)",
  "nativeEvent": {
    "isTrusted": true
  }
}

[6141][StreamController] Video Element Error: MEDIA_ERR_DECODE (CHUNK_DEMUXER_ERROR_APPEND_FAILED: Append: stream parsing failed. Data size=48773 append_window_start=0 append_window_end=inf) 

Full logs:

[3480][MssParser] Parsing complete: (xmlParsing: 147ms, mss2dash: 731ms, total: 0.878s) 
14:31:14.870 Debug.js?2ff8:55 [3486][ManifestUpdater] Manifest has been refreshed at Fri Mar 06 2020 14:31:14 GMT+0000 (Greenwich Mean Time)[1583505074.865]  
14:31:14.998 Debug.js?2ff8:55 [3614][AbrController] [video] switch from 0 to 2/6 (buffer: 0) . 
14:31:15.100 Debug.js?2ff8:55 [3716][Stream] No text data. 
14:31:15.100 Debug.js?2ff8:55 [3716][Stream] No fragmentedText data. 
14:31:15.101 Debug.js?2ff8:55 [3717][Stream] No embeddedText data. 
14:31:15.101 Debug.js?2ff8:55 [3717][Stream] No muxed data. 
14:31:15.101 Debug.js?2ff8:55 [3717][Stream] No image data. 
14:31:15.107 Debug.js?2ff8:55 [3723][PlaybackController] Native video element event: play 
14:31:15.109 Debug.js?2ff8:55 [3725][PlaybackController] Native video element event: waiting 
14:31:15.116 Debug.js?2ff8:55 [3732][BufferController][video] Init fragment finished loading saving to video's init cache 
14:31:15.119 Debug.js?2ff8:55 [3735][BufferController][audio] Init fragment finished loading saving to audio's init cache 
14:31:15.162 Debug.js?2ff8:55 [3778][PlaybackController] Native video element event: loadedmetadata 
14:31:15.162 Debug.js?2ff8:55 [3778][ScheduleController][video] Top quality video index has changed from undefined to 6 
14:31:15.165 Debug.js?2ff8:55 [3781][ScheduleController][audio] Top quality audio index has changed from undefined to 2 
14:31:15.581 Debug.js?2ff8:55 [4197][ScheduleController][audio] OnFragmentLoadingCompleted - Url: ${omitted-video-url} , Range: undefined 
14:31:15.737 Debug.js?2ff8:55 [4353][ScheduleController][video] OnFragmentLoadingCompleted - Url: ${omitted-video-url} , Range: undefined 
14:31:15.739 Debug.js?2ff8:55 [4355][PlaybackController] Requesting internal seek to time: 0.066666 
14:31:15.763 Debug.js?2ff8:55 [4379][PlaybackController] Native video element event: seeked 
14:31:15.769 Debug.js?2ff8:55 [4385][PlaybackController] Native video element event: playing 
14:31:15.919 Debug.js?2ff8:55 [4535][ScheduleController][audio] OnFragmentLoadingCompleted - Url: ${omitted-video-url} , Range: undefined 
14:31:16.496 Debug.js?2ff8:55 [5112][ScheduleController][video] OnFragmentLoadingCompleted - Url: ${omitted-video-url} , Range: undefined 
14:31:17.126 Debug.js?2ff8:55 [5742][ScheduleController][audio] OnFragmentLoadingCompleted - Url: ${omitted-video-url} , Range: undefined 
14:31:17.196 Debug.js?2ff8:55 [5812][ScheduleController][video] OnFragmentLoadingCompleted - Url: ${omitted-video-url} , Range: undefined 
14:31:17.202 Debug.js?2ff8:55 [5818][AbrController] [video] switch from 2 to 4/6 (buffer: 4.862) . 
14:31:17.204 Debug.js?2ff8:55 [5820][BufferController][video] Init fragment finished loading saving to video's init cache 
14:31:17.632 Debug.js?2ff8:55 [6248][AbrController] [audio] switch from 0 to 2/2 (buffer: 4.48) . 
14:31:17.633 Debug.js?2ff8:55 [6249][BufferController][audio] Init fragment finished loading saving to audio's init cache 
14:31:17.832 Debug.js?2ff8:55 [6448][ScheduleController][audio] OnFragmentLoadingCompleted - Url: ${omitted-video-url} , Range: undefined 
14:31:17.896 Debug.js?2ff8:55 [6512][BufferController][audio] Track change asked 
14:31:17.897 Debug.js?2ff8:55 [6513][Stream] Stream -  Process track changed at current time 1.902275 
14:31:17.906 Debug.js?2ff8:55 [6522][BufferController][audio] Append Init fragment audio  with representationId: audio_2  and quality: 2 , data size: 627 
14:31:17.924 Debug.js?2ff8:55 [6540][ScheduleController][video] OnFragmentLoadingCompleted - Url: ${omitted-video-url} , Range: undefined 
14:31:18.053 Debug.js?2ff8:55 [6669][ScheduleController][audio] OnFragmentLoadingCompleted - Url: ${omitted-video-url} , Range: undefined 
14:31:18.056 Debug.js?2ff8:55 [6672][PlaybackController] Reset commonEarliestTime and bufferedRange for audio 
14:31:18.057 Debug.js?2ff8:55 [6673][SourceBufferSink] SourceBufferSink error audio 
doLog @ Debug.js?2ff8:55
error @ Debug.js?2ff8:54
errHandler @ SourceBufferSink.js?69ca:52
error (async)
setup @ SourceBufferSink.js?69ca:40
SourceBufferSink @ SourceBufferSink.js?69ca:52
merge @ FactoryMaker.js?5d57:62
create @ FactoryMaker.js?5d57:54
createBuffer @ BufferController.js?4ad4:30
createBuffer @ StreamProcessor.js?a35e:6
createBuffers @ Stream.js?6c00:26
initializeMedia @ Stream.js?6c00:22
activate @ Stream.js?6c00:6
activateStream @ StreamController.js?7113:29
onMediaSourceOpen @ StreamController.js?7113:29
Show 2 more frames
14:31:18.060 Debug.js?2ff8:55 [6676][PlaybackController] Native video element event: waiting 
14:31:18.061 Debug.js?2ff8:55 [6677][ScheduleController][audio] Buffer is empty! Stalling! 
14:31:18.063 EventProxy.js?d648:78 error {type: "MEDIA_ERROR", message: "A media error has occurred. CHUNK_DEMUXER_ERROR_AP…nd_window_start=0 append_window_end=inf (code: 3)", nativeEvent: Event}
eval @ EventProxy.js?d648:78
SafeSubscriber.__tryOrUnsub @ Subscriber.js?b4ec:192
SafeSubscriber.next @ Subscriber.js?b4ec:130
Subscriber._next @ Subscriber.js?b4ec:76
Subscriber.next @ Subscriber.js?b4ec:53
Subject.next @ Subject.js?9bfd:47
eval @ ProxyObservable.js?8031:71
SafeSubscriber.__tryOrUnsub @ Subscriber.js?b4ec:192
SafeSubscriber.next @ Subscriber.js?b4ec:130
Subscriber._next @ Subscriber.js?b4ec:76
Subscriber.next @ Subscriber.js?b4ec:53
Subject.next @ Subject.js?9bfd:47
SourceHandlerBase.emitError @ SourceHandlerBase.js?37a9:220
HTMLVideoHandlerBase.handleMediaError @ HTMLVideoHandlerBase.js?9ac5:561
SafeSubscriber.__tryOrUnsub @ Subscriber.js?b4ec:192
SafeSubscriber.next @ Subscriber.js?b4ec:130
Subscriber._next @ Subscriber.js?b4ec:76
Subscriber.next @ Subscriber.js?b4ec:53
Subscriber._next @ Subscriber.js?b4ec:76
Subscriber.next @ Subscriber.js?b4ec:53
Subject.next @ Subject.js?9bfd:47
Subscriber._next @ Subscriber.js?b4ec:76
Subscriber.next @ Subscriber.js?b4ec:53
SwitchMapSubscriber.notifyNext @ switchMap.js?fbe7:75
InnerSubscriber._next @ InnerSubscriber.js?1ddc:15
Subscriber.next @ Subscriber.js?b4ec:53
handler @ fromEvent.js?878b:21
error (async)
setupSubscription @ fromEvent.js?878b:31
eval @ fromEvent.js?878b:24
Observable._trySubscribe @ Observable.js?a29c:43
Observable.subscribe @ Observable.js?a29c:29
subscribeToResult @ subscribeToResult.js?8bc2:13
SwitchMapSubscriber._innerSub @ switchMap.js?fbe7:51
SwitchMapSubscriber._next @ switchMap.js?fbe7:41
Subscriber.next @ Subscriber.js?b4ec:53
Subject.next @ Subject.js?9bfd:47
BehaviorSubject.next @ BehaviorSubject.js?0c75:38
eval @ HTMLVideoHandlerBase.js?9ac5:233
step @ tslib.es6.js?eb0a:99
eval @ tslib.es6.js?eb0a:80
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
eval @ tslib.es6.js?eb0a:73
__awaiter @ tslib.es6.js?eb0a:69
HTMLVideoHandlerBase.load @ HTMLVideoHandlerBase.js?9ac5:221
eval @ DashHandler.js?162b:119
step @ tslib.es6.js?eb0a:99
eval @ tslib.es6.js?eb0a:80
eval @ tslib.es6.js?eb0a:73
__awaiter @ tslib.es6.js?eb0a:69
DashHandler.load @ DashHandler.js?162b:114
eval @ dvrMiddleware.js?e599:196
step @ tslib.es6.js?eb0a:99
eval @ tslib.es6.js?eb0a:80
eval @ tslib.es6.js?eb0a:73
__awaiter @ tslib.es6.js?eb0a:69
load @ dvrMiddleware.js?e599:176
eval @ Player.js?52a1:108
step @ tslib.es6.js?eb0a:99
eval @ tslib.es6.js?eb0a:80
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
eval @ tslib.es6.js?eb0a:73
__awaiter @ tslib.es6.js?eb0a:69
Player._this.load @ Player.js?52a1:79
load @ container.tsx?d55a:39
handleLoad @ LoadSource.tsx?47e1:26
callCallback @ react-dom.development.js?61bb:336
invokeGuardedCallbackDev @ react-dom.development.js?61bb:385
invokeGuardedCallback @ react-dom.development.js?61bb:440
invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js?61bb:454
executeDispatch @ react-dom.development.js?61bb:584
executeDispatchesInOrder @ react-dom.development.js?61bb:609
executeDispatchesAndRelease @ react-dom.development.js?61bb:713
executeDispatchesAndReleaseTopLevel @ react-dom.development.js?61bb:722
forEachAccumulated @ react-dom.development.js?61bb:694
runEventsInBatch @ react-dom.development.js?61bb:739
runExtractedPluginEventsInBatch @ react-dom.development.js?61bb:880
handleTopLevel @ react-dom.development.js?61bb:5803
batchedEventUpdates$1 @ react-dom.development.js?61bb:24401
batchedEventUpdates @ react-dom.development.js?61bb:1415
dispatchEventForPluginEventSystem @ react-dom.development.js?61bb:5894
attemptToDispatchEvent @ react-dom.development.js?61bb:6010
dispatchEvent @ react-dom.development.js?61bb:5914
unstable_runWithPriority @ scheduler.development.js?3069:697
runWithPriority$2 @ react-dom.development.js?61bb:12149
discreteUpdates$1 @ react-dom.development.js?61bb:24417
discreteUpdates @ react-dom.development.js?61bb:1438
dispatchDiscreteEvent @ react-dom.development.js?61bb:5881
Show 22 more frames
14:31:18.065 Debug.js?2ff8:55 [6681][StreamController] Video Element Error: MEDIA_ERR_DECODE (CHUNK_DEMUXER_ERROR_APPEND_FAILED: Append: stream parsing failed. Data size=26851 append_window_start=0 append_window_end=inf) 
doLog @ Debug.js?2ff8:55
fatal @ Debug.js?2ff8:54
onPlaybackError @ StreamController.js?7113:38
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
onPlaybackError @ PlaybackController.js?712e:59
error (async)
addEventListener @ VideoModel.js?b2e7:46
addAllListeners @ PlaybackController.js?712e:77
initialize @ PlaybackController.js?712e:30
switchStream @ StreamController.js?7113:27
composeStreams @ StreamController.js?7113:34
onTimeSyncCompleted @ StreamController.js?7113:35
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
completeTimeSyncSequence @ TimeSyncController.js?b7e6:60
onComplete @ TimeSyncController.js?b7e6:66
attemptSync @ TimeSyncController.js?b7e6:75
initialize @ TimeSyncController.js?b7e6:38
onManifestUpdated @ StreamController.js?7113:38
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
update @ ManifestUpdater.js?681f:3
onManifestLoaded @ ManifestUpdater.js?681f:3
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
onXlinkReady @ ManifestLoader.js?50c3:1
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
onXlinkAllElementsLoaded @ XlinkController.js?1ea7:41
resolve @ XlinkController.js?1ea7:35
onXlinkAllElementsLoaded @ XlinkController.js?1ea7:40
resolve @ XlinkController.js?1ea7:35
resolveManifestOnLoad @ XlinkController.js?1ea7:34
success @ ManifestLoader.js?50c3:14
onload @ HTTPLoader.js?9636:35
load (async)
load @ XHRLoader.js?7dff:7
internalLoad @ HTTPLoader.js?9636:37
load @ HTTPLoader.js?9636:43
load @ ManifestLoader.js?50c3:3
load @ StreamController.js?7113:38
initializePlayback @ MediaPlayer.js?e7d0:815
attachSource @ MediaPlayer.js?e7d0:727
initialize @ MediaPlayer.js?e7d0:51
eval @ DashHandler.js?162b:135
step @ tslib.es6.js?eb0a:99
eval @ tslib.es6.js?eb0a:80
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
eval @ tslib.es6.js?eb0a:73
__awaiter @ tslib.es6.js?eb0a:69
DashHandler.load @ DashHandler.js?162b:114
eval @ dvrMiddleware.js?e599:196
step @ tslib.es6.js?eb0a:99
eval @ tslib.es6.js?eb0a:80
eval @ tslib.es6.js?eb0a:73
__awaiter @ tslib.es6.js?eb0a:69
load @ dvrMiddleware.js?e599:176
eval @ Player.js?52a1:108
step @ tslib.es6.js?eb0a:99
eval @ tslib.es6.js?eb0a:80
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
eval @ tslib.es6.js?eb0a:73
__awaiter @ tslib.es6.js?eb0a:69
Player._this.load @ Player.js?52a1:79
load @ container.tsx?d55a:39
handleLoad @ LoadSource.tsx?47e1:26
callCallback @ react-dom.development.js?61bb:336
invokeGuardedCallbackDev @ react-dom.development.js?61bb:385
invokeGuardedCallback @ react-dom.development.js?61bb:440
invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js?61bb:454
executeDispatch @ react-dom.development.js?61bb:584
executeDispatchesInOrder @ react-dom.development.js?61bb:609
executeDispatchesAndRelease @ react-dom.development.js?61bb:713
executeDispatchesAndReleaseTopLevel @ react-dom.development.js?61bb:722
forEachAccumulated @ react-dom.development.js?61bb:694
runEventsInBatch @ react-dom.development.js?61bb:739
runExtractedPluginEventsInBatch @ react-dom.development.js?61bb:880
handleTopLevel @ react-dom.development.js?61bb:5803
batchedEventUpdates$1 @ react-dom.development.js?61bb:24401
batchedEventUpdates @ react-dom.development.js?61bb:1415
dispatchEventForPluginEventSystem @ react-dom.development.js?61bb:5894
attemptToDispatchEvent @ react-dom.development.js?61bb:6010
dispatchEvent @ react-dom.development.js?61bb:5914
unstable_runWithPriority @ scheduler.development.js?3069:697
runWithPriority$2 @ react-dom.development.js?61bb:12149
discreteUpdates$1 @ react-dom.development.js?61bb:24417
discreteUpdates @ react-dom.development.js?61bb:1438
dispatchDiscreteEvent @ react-dom.development.js?61bb:5881
Show 32 more frames
14:31:18.066 Debug.js?2ff8:55 [6682][StreamController] [object MediaError] 
doLog @ Debug.js?2ff8:55
fatal @ Debug.js?2ff8:54
onPlaybackError @ StreamController.js?7113:38
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
onPlaybackError @ PlaybackController.js?712e:59
error (async)
addEventListener @ VideoModel.js?b2e7:46
addAllListeners @ PlaybackController.js?712e:77
initialize @ PlaybackController.js?712e:30
switchStream @ StreamController.js?7113:27
composeStreams @ StreamController.js?7113:34
onTimeSyncCompleted @ StreamController.js?7113:35
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
completeTimeSyncSequence @ TimeSyncController.js?b7e6:60
onComplete @ TimeSyncController.js?b7e6:66
attemptSync @ TimeSyncController.js?b7e6:75
initialize @ TimeSyncController.js?b7e6:38
onManifestUpdated @ StreamController.js?7113:38
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
update @ ManifestUpdater.js?681f:3
onManifestLoaded @ ManifestUpdater.js?681f:3
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
onXlinkReady @ ManifestLoader.js?50c3:1
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
onXlinkAllElementsLoaded @ XlinkController.js?1ea7:41
resolve @ XlinkController.js?1ea7:35
onXlinkAllElementsLoaded @ XlinkController.js?1ea7:40
resolve @ XlinkController.js?1ea7:35
resolveManifestOnLoad @ XlinkController.js?1ea7:34
success @ ManifestLoader.js?50c3:14
onload @ HTTPLoader.js?9636:35
load (async)
load @ XHRLoader.js?7dff:7
internalLoad @ HTTPLoader.js?9636:37
load @ HTTPLoader.js?9636:43
load @ ManifestLoader.js?50c3:3
load @ StreamController.js?7113:38
initializePlayback @ MediaPlayer.js?e7d0:815
attachSource @ MediaPlayer.js?e7d0:727
initialize @ MediaPlayer.js?e7d0:51
eval @ DashHandler.js?162b:135
step @ tslib.es6.js?eb0a:99
eval @ tslib.es6.js?eb0a:80
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
eval @ tslib.es6.js?eb0a:73
__awaiter @ tslib.es6.js?eb0a:69
DashHandler.load @ DashHandler.js?162b:114
eval @ dvrMiddleware.js?e599:196
step @ tslib.es6.js?eb0a:99
eval @ tslib.es6.js?eb0a:80
eval @ tslib.es6.js?eb0a:73
__awaiter @ tslib.es6.js?eb0a:69
load @ dvrMiddleware.js?e599:176
eval @ Player.js?52a1:108
step @ tslib.es6.js?eb0a:99
eval @ tslib.es6.js?eb0a:80
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
eval @ tslib.es6.js?eb0a:73
__awaiter @ tslib.es6.js?eb0a:69
Player._this.load @ Player.js?52a1:79
load @ container.tsx?d55a:39
handleLoad @ LoadSource.tsx?47e1:26
callCallback @ react-dom.development.js?61bb:336
invokeGuardedCallbackDev @ react-dom.development.js?61bb:385
invokeGuardedCallback @ react-dom.development.js?61bb:440
invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js?61bb:454
executeDispatch @ react-dom.development.js?61bb:584
executeDispatchesInOrder @ react-dom.development.js?61bb:609
executeDispatchesAndRelease @ react-dom.development.js?61bb:713
executeDispatchesAndReleaseTopLevel @ react-dom.development.js?61bb:722
forEachAccumulated @ react-dom.development.js?61bb:694
runEventsInBatch @ react-dom.development.js?61bb:739
runExtractedPluginEventsInBatch @ react-dom.development.js?61bb:880
handleTopLevel @ react-dom.development.js?61bb:5803
batchedEventUpdates$1 @ react-dom.development.js?61bb:24401
batchedEventUpdates @ react-dom.development.js?61bb:1415
dispatchEventForPluginEventSystem @ react-dom.development.js?61bb:5894
attemptToDispatchEvent @ react-dom.development.js?61bb:6010
dispatchEvent @ react-dom.development.js?61bb:5914
unstable_runWithPriority @ scheduler.development.js?3069:697
runWithPriority$2 @ react-dom.development.js?61bb:12149
discreteUpdates$1 @ react-dom.development.js?61bb:24417
discreteUpdates @ react-dom.development.js?61bb:1438
dispatchDiscreteEvent @ react-dom.development.js?61bb:5881
Show 32 more frames
14:31:18.067 ConsoleOutput.js?fb31:15 [DS - error] > [DashHandler] {error: DashJSError, type: "error"}
error @ ConsoleOutput.js?fb31:15
eval @ logger.js?9848:48
Logger.logMessage @ logger.js?9848:48
Logger.error @ logger.js?9848:44
LoggerFileNameDecorator.error @ LoggerFileNameDecorator.js?9571:22
DashHandler.handleError @ DashHandler.js?162b:234
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
error @ ErrorHandler.js?4836:7
onPlaybackError @ StreamController.js?7113:38
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
onPlaybackError @ PlaybackController.js?712e:59
error (async)
addEventListener @ VideoModel.js?b2e7:46
addAllListeners @ PlaybackController.js?712e:77
initialize @ PlaybackController.js?712e:30
switchStream @ StreamController.js?7113:27
composeStreams @ StreamController.js?7113:34
onTimeSyncCompleted @ StreamController.js?7113:35
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
completeTimeSyncSequence @ TimeSyncController.js?b7e6:60
onComplete @ TimeSyncController.js?b7e6:66
attemptSync @ TimeSyncController.js?b7e6:75
initialize @ TimeSyncController.js?b7e6:38
onManifestUpdated @ StreamController.js?7113:38
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
update @ ManifestUpdater.js?681f:3
onManifestLoaded @ ManifestUpdater.js?681f:3
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
onXlinkReady @ ManifestLoader.js?50c3:1
eval @ EventBus.js?b3ce:30
trigger @ EventBus.js?b3ce:30
onXlinkAllElementsLoaded @ XlinkController.js?1ea7:41
resolve @ XlinkController.js?1ea7:35
onXlinkAllElementsLoaded @ XlinkController.js?1ea7:40
resolve @ XlinkController.js?1ea7:35
resolveManifestOnLoad @ XlinkController.js?1ea7:34
success @ ManifestLoader.js?50c3:14
onload @ HTTPLoader.js?9636:35
load (async)
load @ XHRLoader.js?7dff:7
internalLoad @ HTTPLoader.js?9636:37
load @ HTTPLoader.js?9636:43
load @ ManifestLoader.js?50c3:3
load @ StreamController.js?7113:38
initializePlayback @ MediaPlayer.js?e7d0:815
attachSource @ MediaPlayer.js?e7d0:727
initialize @ MediaPlayer.js?e7d0:51
eval @ DashHandler.js?162b:135
step @ tslib.es6.js?eb0a:99
eval @ tslib.es6.js?eb0a:80
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
eval @ tslib.es6.js?eb0a:73
__awaiter @ tslib.es6.js?eb0a:69
DashHandler.load @ DashHandler.js?162b:114
eval @ dvrMiddleware.js?e599:196
step @ tslib.es6.js?eb0a:99
eval @ tslib.es6.js?eb0a:80
eval @ tslib.es6.js?eb0a:73
__awaiter @ tslib.es6.js?eb0a:69
load @ dvrMiddleware.js?e599:176
eval @ Player.js?52a1:108
step @ tslib.es6.js?eb0a:99
eval @ tslib.es6.js?eb0a:80
fulfilled @ tslib.es6.js?eb0a:70
Promise.then (async)
step @ tslib.es6.js?eb0a:72
eval @ tslib.es6.js?eb0a:73
__awaiter @ tslib.es6.js?eb0a:69
Player._this.load @ Player.js?52a1:79
load @ container.tsx?d55a:39
handleLoad @ LoadSource.tsx?47e1:26
callCallback @ react-dom.development.js?61bb:336
invokeGuardedCallbackDev @ react-dom.development.js?61bb:385
invokeGuardedCallback @ react-dom.development.js?61bb:440
invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js?61bb:454
executeDispatch @ react-dom.development.js?61bb:584
executeDispatchesInOrder @ react-dom.development.js?61bb:609
executeDispatchesAndRelease @ react-dom.development.js?61bb:713
executeDispatchesAndReleaseTopLevel @ react-dom.development.js?61bb:722
forEachAccumulated @ react-dom.development.js?61bb:694
runEventsInBatch @ react-dom.development.js?61bb:739
runExtractedPluginEventsInBatch @ react-dom.development.js?61bb:880
handleTopLevel @ react-dom.development.js?61bb:5803
batchedEventUpdates$1 @ react-dom.development.js?61bb:24401
batchedEventUpdates @ react-dom.development.js?61bb:1415
dispatchEventForPluginEventSystem @ react-dom.development.js?61bb:5894
attemptToDispatchEvent @ react-dom.development.js?61bb:6010
dispatchEvent @ react-dom.development.js?61bb:5914
unstable_runWithPriority @ scheduler.development.js?3069:697
runWithPriority$2 @ react-dom.development.js?61bb:12149
discreteUpdates$1 @ react-dom.development.js?61bb:24417
discreteUpdates @ react-dom.development.js?61bb:1438
dispatchDiscreteEvent @ react-dom.development.js?61bb:5881
Show 34 more frames
14:31:18.079 Debug.js?2ff8:55 [6695][PlaybackController] Native video element event: ratechange:  1 
@eowino
Copy link
Contributor Author

eowino commented Mar 6, 2020

Changing the following line:

adaptationSet.id = streamIndex.getAttribute('Name') ? streamIndex.getAttribute('Name') : streamIndex.getAttribute('Type');

To (for e.g.):

adaptationSet.id = streamIndex.getAttribute('Name') ? streamIndex.getAttribute('Name') : streamIndex.getAttribute('Type') + '_' + streamIndex.getAttribute('Language'); 

resolves the issue as playback continues.

@eowino
Copy link
Contributor Author

eowino commented Mar 6, 2020

The Smooth manifest in question (albeit sanitised and trimmed):

<?xml version="1.0" encoding="utf-8"?>
<SmoothStreamingMedia MajorVersion="2" MinorVersion="0" Duration="182924666670">
	<StreamIndex Type="video" QualityLevels="7" Chunks="9147" Url="QualityLevels({bitrate})/exp=001/Fragments(video={start time})">
		<QualityLevel Index="0" Bitrate="345713" FourCC="H264" MaxWidth="512" MaxHeight="288" />
		<QualityLevel Index="1" Bitrate="596238" FourCC="H264" MaxWidth="640" MaxHeight="360" />
		<QualityLevel Index="2" Bitrate="965860" FourCC="H264" MaxWidth="896" MaxHeight="504" />
		<QualityLevel Index="3" Bitrate="1501769" FourCC="H264" MaxWidth="1280" MaxHeight="720" />
		<QualityLevel Index="4" Bitrate="3352592" FourCC="H264" MaxWidth="1280" MaxHeight="720" />
		<QualityLevel Index="5" Bitrate="4841763" FourCC="H264" MaxWidth="1920" MaxHeight="1080" />
		<QualityLevel Index="6" Bitrate="7759345" FourCC="H264" MaxWidth="1920" MaxHeight="1080" />
	</StreamIndex>
	<StreamIndex Type="audio" QualityLevels="3" Chunks="9147" Language="deu" Url="QualityLevels({bitrate})/exp=001/Fragments(audio={start time})">
		<QualityLevel Index="0" Bitrate="64683" FourCC="AACL" SamplingRate="48000" Channels="2" BitsPerSample="16" PacketSize="4" AudioTag="255" />
		<QualityLevel Index="1" Bitrate="129910" FourCC="AACL" SamplingRate="48000" Channels="2" BitsPerSample="16" PacketSize="4" AudioTag="255" />
		<QualityLevel Index="2" Bitrate="194093" FourCC="AACL" SamplingRate="48000" Channels="2" BitsPerSample="16" PacketSize="4" AudioTag="255" />
	</StreamIndex>
	<StreamIndex Type="audio" QualityLevels="3" Chunks="9147" Language="rus" Url="QualityLevels({bitrate})/exp=001/Fragments(audio={start time})">
		<QualityLevel Index="0" Bitrate="64611" FourCC="AACL" SamplingRate="48000" Channels="2" BitsPerSample="16" PacketSize="4" AudioTag="255" />
		<QualityLevel Index="1" Bitrate="129342" FourCC="AACL" SamplingRate="48000" Channels="2" BitsPerSample="16" PacketSize="4" AudioTag="255" />
		<QualityLevel Index="2" Bitrate="193358" FourCC="AACL" SamplingRate="48000" Channels="2" BitsPerSample="16" PacketSize="4" AudioTag="255" />
	</StreamIndex>
	<StreamIndex Type="audio" QualityLevels="3" Chunks="9147" Language="hin" Url="QualityLevels({bitrate})/exp=001/Fragments(audio={start time})">
		<QualityLevel Index="0" Bitrate="64585" FourCC="AACL" SamplingRate="48000" Channels="2" BitsPerSample="16" PacketSize="4" AudioTag="255" />
		<QualityLevel Index="1" Bitrate="129744" FourCC="AACL" SamplingRate="48000" Channels="2" BitsPerSample="16" PacketSize="4" AudioTag="255" />
		<QualityLevel Index="2" Bitrate="194052" FourCC="AACL" SamplingRate="48000" Channels="2" BitsPerSample="16" PacketSize="4" AudioTag="255" />
	</StreamIndex>
</SmoothStreamingMedia>

@dsilhavy dsilhavy added the MSS Microsoft Smooth Streaming label Mar 11, 2020
@dsilhavy
Copy link
Collaborator

@eowino Can you open a. pull request for your change/fix?

@eowino
Copy link
Contributor Author

eowino commented Mar 11, 2020

@dsilhavy Sure can!

@dsilhavy
Copy link
Collaborator

Fixed in #3195 thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
MSS Microsoft Smooth Streaming
Projects
None yet
Development

No branches or pull requests

3 participants