Chromecast Live HLS

Hello,

After struggling with my CORS headers, I managed to make my VOD content work with Chromecast via the player module.

My problem now is that Chromecast refuses to play the live HLS stream (nginx, manual live).

Does anyone have had any experience with this ? Or do I have to switch back to wowza / kaltura integration ?

I have validated muy hls stream and works in all devices but Chromecast.

Any help will be appreciated,

David Eusse

Hello,

I’l answer my own question in case somebody else needs it.
Here are some instructions for making Chromecast work (somehow):

  1. You need to create either a custom or skinned receiver on cast.google.com and publish it

  2. Assign the Application ID to your player.

  3. Activate a DASH VOD delivery profile

  4. Verify that your CORS headers are OK (another headache):
    add_header ‘Access-Control-Allow-Headers’ ‘*’;
    add_header ‘Access-Control-Allow-Headers’ ‘Range’;
    add_header ‘Access-Control-Expose-Headers’ ‘Content-Length, Content-Range’;

    add_header ‘Access-Control-Expose-Headers’ ‘Server,Range,Content-Length,Content-Range’;

      add_header 'Access-Control-Allow-Methods' 'GET, HEAD, OPTIONS';
      add_header 'Access-Control-Allow-Origin' '*';
    
  5. For your nginx live HLS you need to setup ABSOLUTE urls like this:
    hls_base_url https://cdn.yyy.com/live/;

  6. If you want to customize your receiver you can point it to your player’s module, like this:
    https://mykaltura.xxx.com/html5/html5lib/v2.80/modules/Chromecast/resources/receiver/receiver.html

  7. That’s it

David

Hello. I found myself in the same place.

Everything works ( with some caveats ), but still no Chromecast for HLS. I can follow @david.eusse proposed solution with the exception of the absolute path for hls.

if I do something like this:

hls_base_url https://cdn.yyy.com/live/;

My live streams cease to work. If I do not include hls_base_url, then live streams work, but without possibility to cast them.

For instance, if I enable it, I gets something like this in my logs:

2021/03/14 20:43:37 [error] 32180#32180: *2 open() "/var/tmp/hlsme/dfe9ca17-9450-4649-8515-d8ba56d247f2.m3u8" failed (2: No such file or directory), client: 127.0.0.1, server: kaltura-backend.example.com, request: "GET /hlsme/dfe9ca17-9450-4649-8515-d8ba56d247f2.m3u8 HTTP/1.1", host: "kaltura-backend.example.com:88"

Which is the same error I get when there is no stream at all.

Hello.

The Url I gave last year was just an example. You need to set your hls_base_url, probably like this:

hls_base_url https://cdn.yyy.com/hlsme/;

Try again and let me know.

Regards

Excuse me for the VERY late reply.

No, if I enable

          `  hls_base_url https://myserver.domain.com/hlsme/;`

Or ANY path (the only that works as default seems to be kLive), live streams stop working. So that we understand each other, this:

hls_base_url https://myserver.domain.com/kLive/;
does not work either.

The stream IN connects, but the preview screen shows like its nothing happening.

Screenshot_20210415_195816

I see the log showing a happy stream:

127.0.0.1 - - [15/Apr/2021:19:58:24 +0200] “GET /hlsme/test.m3u8 HTTP/1.1” 200 2560 0.000 “-” “-” “-” - “-” “myserver.domain.com:88” 26544 - - 85 “-” “-” “-” “-” “no-cache” 20

Hello,
It seems that you are still pulling from port 88. I suggest to create a live delivery profile serving on port 443 and adjust your nginx accordingly.

What we do is to proxy our content via a CDN but let kaltura-nginx serve the stream on port 88.

Regards,

David

OK let me try that. Thanks!


Edit: so, basically that will mean nginx living in a separate host; 443 is already taken by apache, correct?

So you have Apache for the API in 443 in one host and Nginx also in 443 in another and then with the reverse proxy you call each service, right?

Hello,

It is a lot easier to handle a separate delivery from the core Kaltura api server services.

On your admin console, you can add LIVE and VOD profiles that point to your CDN or alternative nginx.
This servers will pull your hls streams from your kaltura-nginx packager on port 88.

regards,

David