Playlist player keeps loading on IOS


#1

Hi,

New to Kaltura I have setup a CE proof of concept based on version 12.4.0.
After adding content and defining a playlist created a Universe player.
This one works on Windows and android but not on IOS.
On all devices we see the initial player with the thumbnails but after clicking the start button only the Kaltura loading icon is spinning.
This is an example
What am I missing?

Thanks in advance for any help.

Kind regards
Johnny


#2

Hi Johnny,

I see you’re using player v2.49, which is good, however, looking at the manifest being requested by the player, I see it is one for progressive download and not HLS, which, since version 2.48 is the default playback method… this can easily be seen when running a sniffer during playback, the playManifest request looks like this:
p/102/sp/10200/playManifest/entryId/0_pjgxfi0j/flavorId/0_m94ta2ub/format/url/protocol/http/a.mp4

when requesting a HLS manifest, it should be format/applehttp/protocol/http…

I assume this is because you’ve set disableHLSOnJs = true for this player? That would work on desktops but on iOS, it will fail, on iOS, we always use HLS for playback.

As part of CE, we have the kaltura-nginx package, which includes the nginx-vod-module [https://github.com/kaltura/nginx-vod-module], allowing you to serve m3u8 manifests to the player, without having to use external services.
If you set disableHLSOnJs = true, please unset it and let’s see if the player functions correctly when using a desktop machine [simply easier to debug from a desktop than from an iOS device, which I don’t have at my disposal at the moment anyhow], if it DOES play, then I’m afraid you’ll have to connect your iOS device to a Mac and look at the HTTP requests being made to understand what the issue is, if it does NOT play, then we need to troubleshoot that and afterwards, it will most likely playback from the iOS device as well.


#3

Hi Jess,

Thanks for the quick response!

I did not set/unset disableHLSOnJs
Now to unset it I added disableHLSOnJs = false in the player UI Variables
On MAC I see that it is trying to load the a.m3u8 but only shows spinning icon.
On Windows/Firfox I keep seeing the a.mp4 is that supposed to happen?

Appreciate your assistance!

Kind regards,
Johnny


#4

Hi Jess,

Do you have an other idea?
Not sure how I need to proceed…

Thanks in advance,
Johnny


#5

Hello @jdeproost,

http://146.185.182.10/index.php/extwidget/preview/partner_id/102/uiconf_id/23448204/embed/auto?&flashvars[streamerType]=auto&flashvars[playlistAPI.kpl0Id]=0_wwm4yehd is no longer working so I cannot look into it any further, please provide an alt URL.

In general, I’d recommend upgrading to 12.5.0 which includes player version v2.50 before we continue troubleshooting, although v2.49 included in 12.4.0 should work as well.

You can find the changelog for 12.5.0 as well upgrade info, here:


#6

Hi Jess,

Upgraded to 12.5.0-2
Created a new universal player without changing any of the setting.
You can see it here
Still no luck on iPad… did not expect it to be so complicated.

Thanks for the assistance.

Kind regards,
Johnny


#7

Some progress with an other player
This is playing but the playlist panel is not show and only the first content item of the playlist plays on iPad


#8

Hello @jdeproost,

The issue causing the player to use progressive download as the playback method was fixed in 12.7.0 and so, upgrading should make the player use HLS, which in turn, should make playback work correctly on iOS devices.

Just as a reminder, note that you should be using the HTML5 player and NOT the legacy Flash player [KDP]. To create an HTML5 player go to KMC->Studio and click on “Add New Player”

Please see upgrade instructions here:

Thanks,


#9

Hi Jess,

I’m back on Kaltura.
Just to be sure I reinstalled from scratch, so now running Community Edition 12.10.0-2 vanilla install.

The issue now is using a custom new player I see it is trying to load the address:
http://127.0.0.1:88/hls/p/101/sp/10100/serveFlavor/entryId/0_q3jgv1ry/v/2/flavorId/0_i9ijw6yf/name/a.mp4/index.m3u8
Hence the localhost IP
The preview is here:
http://146.185.182.10/index.php/extwidget/preview/partner_id/101/uiconf_id/23448194/entry_id/0_q3jgv1ry/embed/auto?&flashvars[streamerType]=auto
This fails on my windows machine, en Apple, spinner keeps turning, Android is fine.
console says: kWidget: Kaltura HTML5 Version: 2.53

I assume it should be the FQDN. I checked Nginx it’s defined with the hostname.

Any idea where I can change the 127.0.0.1?

Thanks,
Johnny


#10

Hi Johnny,

Yes, that should be changed in the DB. The table is called ‘delivery_profile’. Please make sure the ‘url’ column reflects the correct FQDN to where the Nginx runs [can be an LB if you’re doing SSL offloading]. Unless you overrode any of the default profiles, the relevant profile delivery IDs to change are 1001, 1002 and 1003.
Note that Nginx needs to be accessible from every client you intend to play from.


#12

Hi Jess,

After update the table with the correct url’s it is working on all devices and browsers!!

Thanks for your support.

tip: would be nice to have these url’s correct when installing :wink:


#13

Hi @jdeproost,

Glad we’re good:)

The post installation script does prompt for the Nginx hostname, the prompting is done in /opt/kaltura/bin/kaltura-nginx-config.sh if running the RPM version:

"Nginx server name [`hostname`]: "

or if using Deb, it happens in the kaltura-nginx postinst phase [/var/lib/dpkg/info/kaltura-nginx.postinst]:

db_get 'kaltura-nginx/nginx_hostname'

I suppose when it first ran, you may have chosen 127.0.0.1. Perhaps it would be wise to add a note stating it needs to be accessible from anywhere you intend to play from. I’ll think of a proper phrasing.

It is true that while you can always reconfigure Nginx by running /opt/kaltura/bin/kaltura-nginx-config.sh [RPM] or dpkg-reconfigure kaltura-nginx [Deb], the DB needs to be manually adjusted if something changes. That is explained here though:

"In addition, when changing the CDN hostname, the kaltura.delivery_profile table must be updated.

# mysql -h$DB1_HOST -u$DB1_USER -p$DB1_PASS $DB1_NAME

mysql> select id,name,url,host_name from delivery_profile;

Then use update statements to reset the url and hostname."

If you feel that’s not sufficiently clear, I’m certainly open to suggestion and pull requests.

Thanks,