Unable to display a video with a custom player

Hi
In the studio I defined my own player without social sharing buttons.
On a content, when I click on preview and I choose this player
I click on play to check the video
Then in kaltlog I got :

]
2017-01-11 16:31:45 [0.001966] [10.0.2.2] [1102997799] [4] [API] [KalturaDispatcher->dispatch] CRIT: Exception: Action does not exist! in /opt/kaltura/app/infra/log/KalturaLog.php:74
Stack trace:
#0 /opt/kaltura/app/api_v3/lib/KalturaDispatcher.php(56): KalturaLog::crit('Action does not...')
--
#3 {main}
2017-01-11 16:31:45 [0.000172] [10.0.2.2] [1102997799] [5] [API] [KalturaFrontController->getExceptionObject] ERR: KalturaAPIException: Action "trackevent" does not exists for service "analytics" in /opt/kaltura/app/api_v3/lib/KalturaDispatcher.php:57
Stack trace:
#0 /opt/kaltura/app/api_v3/lib/KalturaFrontController.php(113): KalturaDispatcher->dispatch('analytics', 'trackevent', Array)
--
]
2017-01-11 16:31:45 [0.001950] [10.0.2.2] [118726681] [4] [API] [KalturaDispatcher->dispatch] CRIT: Exception: Action does not exist! in /opt/kaltura/app/infra/log/KalturaLog.php:74
Stack trace:
#0 /opt/kaltura/app/api_v3/lib/KalturaDispatcher.php(56): KalturaLog::crit('Action does not...')
--
#3 {main}
2017-01-11 16:31:45 [0.000141] [10.0.2.2] [118726681] [5] [API] [KalturaFrontController->getExceptionObject] ERR: KalturaAPIException: Action "trackevent" does not exists for service "analytics" in /opt/kaltura/app/api_v3/lib/KalturaDispatcher.php:57
Stack trace:
#0 /opt/kaltura/app/api_v3/lib/KalturaFrontController.php(113): KalturaDispatcher->dispatch('analytics', 'trackevent', Array)
--
]
2017-01-11 16:31:48 [0.002758] [10.0.2.2] [468666172] [4] [API] [KalturaDispatcher->dispatch] CRIT: Exception: Action does not exist! in /opt/kaltura/app/infra/log/KalturaLog.php:74
Stack trace:
#0 /opt/kaltura/app/api_v3/lib/KalturaDispatcher.php(56): KalturaLog::crit('Action does not...')
--
#3 {main}
2017-01-11 16:31:48 [0.000267] [10.0.2.2] [468666172] [5] [API] [KalturaFrontController->getExceptionObject] ERR: KalturaAPIException: Action "trackevent" does not exists for service "analytics" in /opt/kaltura/app/api_v3/lib/KalturaDispatcher.php:57
Stack trace:
#0 /opt/kaltura/app/api_v3/lib/KalturaFrontController.php(113): KalturaDispatcher->dispatch('analytics', 'trackevent', Array)
^[--
==> /opt/kaltura/log/batch/import-1-2017-01-11.log <==
2017-01-11 16:32:41 [595.040389] [1139229581] [23] [BATCH] [KJobHandlerWorker->closeJob] ERR: exception 'Exception' with message 'Couldn't read file. Error: Operation too slow. Less than 1 bytes/sec transferred the last 595 seconds' in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/batch/batches/KJobHandlerWorker.class.php(364): KalturaLog::err('Couldn't read f...')
--

In the browser I got error on
``
GET http://…:88/hls/p/101/sp/10100/serveFlavor/entryId/0_hf3et0j6/v/2/flavorId/0_k7k4h8pm/name/a.mp4/index.m3u8 net::ERR_CONNECTION_REFUSED
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
e.emit @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
i.trigger @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
set @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
set @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
set @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
e.emit @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
i.trigger @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
e.emit @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
i.trigger @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
XMLHttpRequest.send (async)
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
e.emit @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
i.trigger @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
(anonymous) @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
(anonymous) @ VM6143:65
j @ VM6143:63
fireWith @ VM6143:64
e.(anonymous function) @ VM6143:65
success @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:40
j @ VM6143:63
fireWith @ VM6143:64
x @ VM6143:122
b @ VM6143:126
XMLHttpRequest.send (async)
send @ VM6143:126
ajax @ VM6143:122
embedPlayer.resolveSrcURL @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:40
onMediaAttached @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
e.emit @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
i.trigger @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
value @ VM6067 load.php?debug=false&lang=en&modules=Hlsjs%2CacCheck%2CacPreview%2Cbase64_decode%2Cbase64_en…:1
kmc4#content|manage:1 Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause().

Hi,

The issue stems from a failure to reach the Nginx which loads the VOD module, which is needed in order to play content using HLS.

The problem is here:
GET http://…:88/hls/p/101/sp/10100/serveFlavor/entryId/0_hf3et0j6/v/2/flavorId/0_k7k4h8pm/name/a.mp4/index.m3u8 net::ERR_CONNECTION_REFUSED

Is your Nginx running and does it listen on port 88 TCP?
Also, what is the output for:

mysql> select * from delivery_profile where id in (1001,1002,1003)\G
vpnAmetys@cccccccccc:~$ ps -edf | grep nginx
root      1052     1  0 15:01 ?        00:00:00 nginx: master process /opt/kaltura/nginx/sbin/nginx
kaltura   1053  1052  0 15:01 ?        00:00:00 nginx: worker process        
kaltura   1054  1052  0 15:01 ?        00:00:00 nginx: worker process        
kaltura   1055  1052  0 15:01 ?        00:00:00 nginx: worker process        
kaltura   1056  1052  0 15:01 ?        00:00:00 nginx: worker process        
kaltura   1057  1052  0 15:01 ?        00:00:00 nginx: cache manager process 
vpnAmet+  9545  9066  0 16:58 pts/3    00:00:00 grep --color=auto nginx
vpnAmetys@cccccccccc:~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20573
Server version: 5.5.53-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| kaltura             |
| kaltura_sphinx_log  |
| kalturadw           |
| kalturadw_bisources |
| kalturadw_ds        |
| kalturalog          |
| mysql               |
| performance_schema  |
+---------------------+
9 rows in set (0.00 sec)

mysql> use kaltura;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from delivery_profile where id in (1001,1002,1003)\G
*************************** 1. row ***************************
             id: 1001
     partner_id: 0
     created_at: 2017-01-11 11:42:44
     updated_at: 2017-01-11 11:42:44
           name: Kaltura HLS segmentation
           type: 61
    system_name: Kaltura HLS segmentation
    description: Kaltura HLS segmentation
            url: http://xxxx-streaming.xxxx.fr:88/hls
      host_name: xxxx-streaming.xxxx.fr
     recognizer: NULL
      tokenizer: NULL
         status: 0
media_protocols: NULL
  streamer_type: applehttp
     is_default: 1
      parent_id: 0
    custom_data: NULL
       priority: 0
*************************** 2. row ***************************
             id: 1002
     partner_id: 0
     created_at: 2017-01-11 11:42:44
     updated_at: 2017-01-11 11:42:44
           name: Kaltura HDS segmentation
           type: 63
    system_name: Kaltura HDS segmentation
    description: Kaltura HDS segmentation
            url: http://xxxx-streaming.xxxx.fr:88/hds
      host_name: xxxx-streaming.xxxx.fr
     recognizer: NULL
      tokenizer: NULL
         status: 0
media_protocols: NULL
  streamer_type: hdnetworkmanifest
     is_default: 1
      parent_id: 0
    custom_data: NULL
       priority: 0
*************************** 3. row ***************************
             id: 1003
     partner_id: 0
     created_at: 2017-01-11 11:42:44
     updated_at: 2017-01-11 11:42:44
           name: Kaltura DASH segmentation
           type: 68
    system_name: Kaltura DASH segmentation
    description: Kaltura DASH segmentation
            url: http://xxxx-streaming.xxxx.fr:88/dash
      host_name: xxxx-streaming.xxxx.fr
     recognizer: NULL
      tokenizer: NULL
         status: 0
media_protocols: NULL
  streamer_type: mpegdash
     is_default: 1
      parent_id: 0
    custom_data: NULL
       priority: 0
3 rows in set (0.00 sec)

Is http://xxxx-streaming.xxxx.fr:88/hls accessible from the machine you’re trying to play from?
If it is not, then that’s the problem, if it is, make a request to http://…:88/hls/p/101/sp/10100/serveFlavor/entryId/0_hf3et0j6/v/2/flavorId/0_k7k4h8pm/name/a.mp4/index.m3u8 again and check the Nginx error log to see why it cannot be served.

1 Like

Yes, it is probably a problem of open ports, I will check and let you know.
Thank you

OK, note you can reconfigure Nginx to use a different port if you’d like but then you’ll have to adjust the kaltura.delivery_profile records accordingly.

http://…:88/hls/p/101/sp/10100/serveFlavor/entryId/0_hf3et0j6/v/2/flavorId/0_k7k4h8pm/name/a.mp4/index.m3u8
It does not work on port 88 but it works on port 80

Port 80 is used by the Apache which runs the Kaltura API and web interfaces. Port 88 is used by Nginx to serve HLS, HDS and DASH manifests for playback.
Both need to be accessible from all clients you intend to use. Like I wrote above, you can change the Nginx config to use a different port and adjust the kaltura.delivery_profile records accordingly.

Yes it is working when I open port 88.

BUT If I understand well :

  • HDS = HTTP Live Streaming
  • HDS : HTTP Dynamic streaming
  • DASH : Dynamic Adaptive Streaming over HTTP

When I check the requests on the same content (same video):

  • when I use the default player, port 88 is not used
  • when I used personalized player, port 88 is used

Why there is this difference ?

Hi @fravetier,

The “default players” are old Flash players, they are deprecated and should not be used. Their default playback method is progressive download, which is why they do not necessitate use the Nginx VOD module [which by default, listens on port 88 TCP, though as I explained, the port can be changed]. The default playback method for the HTML5 players is HLS and so, Nginx and its VOD module are needed for playback. If you prefer, you can use any external CDN that knows how to serve HLS manifests instead.

You can disable HLS playback when using the HTML5 player, which will make it revert to progressive playback but then, it will not work correctly on iOS devices and I wouldn’t recommend that. Plus, for videos longer than just a few seconds, there are advantages to using an adaptive bitrate format [HLS, HDS, DASH] over progressive download.

1 Like

Thank you for your detailled answer!
Have a good day.

Most welcome && you too.