Orange-OpenSource / hasplayer.js

Http Adaptive Streaming javascript player based on HTML5 premium extensions (MSE/EME)
Other
197 stars 67 forks source link

Smooth/playready media "not supported" from v1.12.0 #228

Closed k-y0u closed 6 years ago

k-y0u commented 6 years ago

Hi,

I'm actually upgrading hasplayer in my project but it seems that several media can't be read anymore. When I try to read a "broken" media I get the following answer: {code: "MEDIA_ERR_SRC_NOT_SUPPORTED", message: "[Stream]

My problem appear only from version 1.12.0 of hasplayer.js and only on several media. Apparently the KID is missing on the non-working media but i'm not sure the problem come from that.

I put the manifests of a non-working media and a working media, maybe it can help.

ManifestNotWorkingMedia.txt ManifestWorkingMedia.txt

bbert commented 6 years ago

Hi, Not easy to give you a feedback without testing the stream. Can you provide a test stream url?

k-y0u commented 6 years ago

Hi, Here is the stream url of the non-working media:

https://tf1-od-preprod.akamaized.net//smooth/test_osm/17856/smooth_hd_audio_1/hd_audio_1.ism/Manifest

nicosang commented 6 years ago

Hi @k-y0u ,

I did some tests with your stream. I have an error too with old version of hasplayer.js (for instance 1.10.0) due to license acquisition failing. Could you, please, provide us all datas to get license correctly? You can do it, if you prefer, by email...

Thanks, Nico

abodelot commented 6 years ago

Hi @nicosang

I'm working with @k-y0u on this issue.

Please find below a license token and the license acquisition URL for the content provided above.

{
  custom_data: "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48S2V5T1NBdXRoZW50aWNhdGlvblhNTD48RGF0YT48UG9saWN5IHBlcnNpc3RlbnQ9InRydWUiPjxNaW5pbXVtU2VjdXJpdHlMZXZlbD4xNTA8L01pbmltdW1TZWN1cml0eUxldmVsPjwvUG9saWN5PjxQbGF5PjxPdXRwdXRQcm90ZWN0aW9ucz48T1BMPjxDb21wcmVzc2VkRGlnaXRhbFZpZGVvPjQwMDwvQ29tcHJlc3NlZERpZ2l0YWxWaWRlbz48QW5hbG9nVmlkZW8+MTAwPC9BbmFsb2dWaWRlbz48VW5jb21wcmVzc2VkRGlnaXRhbFZpZGVvPjEwMDwvVW5jb21wcmVzc2VkRGlnaXRhbFZpZGVvPjwvT1BMPjxBbmFsb2dWaWRlb0V4cGxpY2l0PjxJZD5DM0ZEMTFDNi1GOEI3LTREMjAtQjAwOC0xREIxN0Q2MUYyREE8L0lkPjwvQW5hbG9nVmlkZW9FeHBsaWNpdD48L091dHB1dFByb3RlY3Rpb25zPjwvUGxheT48R2VuZXJhdGlvblRpbWU+MjAxOC0wNC0wNiAxMzozMTo0NC4wMDA8L0dlbmVyYXRpb25UaW1lPjxFeHBpcmF0aW9uVGltZT4yMDE5LTA1LTI4IDA0OjMxOjQ0LjAwMDwvRXhwaXJhdGlvblRpbWU+PFVuaXF1ZUlkPmM1YTllYzUwMWJjYzAxMzZiNDQ3NTIwMDk1ODRjMDg0PC9VbmlxdWVJZD48UlNBUHViS2V5SWQ+NmM2NDFkMTVhMmMxOWY1M2VjZDA0ODg0OThiM2VmNmY8L1JTQVB1YktleUlkPjwvRGF0YT48U2lnbmF0dXJlPkRWQi9yMjlZWERaYlZQcjN0S3hvSWp6T2Nra01MTWdhS2xsL1NHZ29zalY1b3YxWlQ2Z0FxNjdGR0pjdk9LK09EbDJLNjdyemgxWnZKenZGcktQenRaZGU1Y0lOM1pMd1lCcDVCQmQrcFlwWU1vNXI4MDNGL1R5R0lqTkVRSGNJbEltM3ZTbjN2SzczYm42TkN0Ty9IS2ZqeTl3cVgvMFNxR0dvbkNqeFNBenRLTUg3REYzbUg1bGpGQXVDUkVFRWUxRmNCdTIxd1NoLytQbFpPM3BmczJydjFhYUxhWGNqZVBiTStYMEgvTEhvK0xON2RNb1ljYUtSTXMvREpVZUJOOG05d0hkckhPVmRmOFZCc3IwNkM0V2VSTDA3YkFmT0ZtS1hpYUU1a2poTnhwYlRvK0FiSjBJY25Sa2lwb0JqTnpmRWM4OEo2VVlNZ2ozbWtHZ0Z1dz09PC9TaWduYXR1cmU+PC9LZXlPU0F1dGhlbnRpY2F0aW9uWE1MPg==",
  license_acquisition_url: https://sl.licensekeyserver.com/core/rightsmanager.asmx
}

We are able to successfully play this content with hasPlayer <= v1.11. It seems there's a breaking change introduced in v1.12.

It would be great if you could tell us if the playback issue comes from our manifest or from hasPlayer.

Best,

nicosang commented 6 years ago

Hi @abodelot and @k-y0u ,

could you, please, take a look at my PR #231 ? It should solve your issue....based on bad management of mp4 'subs' box.

Thanks, Nico

k-y0u commented 6 years ago

Hi @nicosang ,

Thanks for your help and for your work, it works fine with the both kinds of media. Could you give us some details/explanations about your correction? I'de like to know also when the release with the correction will be available?

nicosang commented 6 years ago

Hi @k-y0u ,

of course, I can explain... :-). Quite a long time ago (for 1.12 version), we were obliged to add parsing of 'subs' mp4 box for the management of subtitles. This 'subs' box was carriing useful data for this purpose : we only needed to read the content because, for subtitles, some VTT cues are created to render thoses informations (no need to write at all). In your use case, you have this kind of mp4 box in your video stream. Don't ask me why you need it, I don't know :-). The problem is as we parse this box, we need, during the mp4 boxes processing, to write it again. This write function was not implemented at all. So, I've just added its implementation.

Before the 1.12 version, your stream should already had this mp4 'subs' box but this kind of box was unknown for the parser : it rewrote it without modification.

A new release has been created yesterday. You can find it here

Nico