This is an embed code for the legacy Flash player [KDP].
Please go to KMC->Studio and create an HTML5 player, then provide the embed code for that.
Thanks,
This is an embed code for the legacy Flash player [KDP].
Please go to KMC->Studio and create an HTML5 player, then provide the embed code for that.
Thanks,
Please see my reply here: https://forum.kaltura.org/t/authenticator-code-on-admin-console-an-error-occurred/6022/13
and make sure you don't have the same issue. If the issue is the same, then I do not need access to your ENV, otherwise, please provide me with access info so I can debug further.
Hello all,
The latest version is now available.
RPM based:
Deb based:
Or, if running a cluster:
Hi, http://31.14.40.115/kalt.html
Hope this is ok.
Hi @razvan_iacob,
If you open the page and your browser's dev tools under the "console" tab, you'll see this is a player of version 2.45. We need version 2.48.1 and above but regardless of that, trying to stream to rtmp://31.14.40.115:1935/kLive/test, I get a response that makes me believe I am answered by the Wowza daemon, not Nginx...
$ ffmpeg -re -i /path/to/mp4 -c copy -f flv "rtmp://31.14.40.115:1935/kLive/test"
Returns with:
[rtmp @ 0x1b1f260] Unknown connect error (unsupported authentication method?)
[rtmp @ 0x1b1f260] Server error: Connection failed: Application folder ([install-location]/applications/kLive) is missing.
rtmp://31.14.40.115:1935/kLive/test: Unknown error occurred
If you do:
$ curl -I -v 31.14.40.115:1935
You'll see I'm right and it is Wowza, not Nginx that answers:
* Server WowzaStreamingEngine/4.5.0 is not blacklisted
< Server: WowzaStreamingEngine/4.5.0
Server: WowzaStreamingEngine/4.5.0
i had wowza on the server, but it's not running on it..
I'll double check...
Jess the streaming server is 162.244.80.111, 31.14.40.115 is just a test server and yes it has Wowza, but i use it only for the web server to load players.
So, the streaming server is 162.244.80.111:1935/kLive
31.14.40.115 is just a web server where I test the players.
[root@nginx conf.d]# netstat -anp|grep 1935
tcp 0 0 0.0.0.0:1935 0.0.0.0:* LISTEN 3731/nginx
tcp 0 0 162.244.80.111:1935 89.136.235.146:52056 ESTABLISHED 3735/nginx
tcp 0 0 162.244.80.111:1935 89.136.235.146:63032 ESTABLISHED 3740/nginx
tcp 0 0 162.244.80.111:1935 162.244.80.215:46479 ESTABLISHED 3737/nginx
tcp 0 0 162.244.80.111:1935 89.136.235.146:63522 ESTABLISHED 3735/nginx
89.136.235.146 this is my encoder ip, as you can see it shows it connected.
I see. I missed
Before... sorry!
At any rate, streaming to rtmp://162.244.80.111:1935/kLive/test seems fine and I am also getting the manifest when making a request to http://162.244.80.111:88/hlsme/test.m3u8
Your JWPlayer is trying to load the manifest from http://162.244.80.111:1935/kLive/test/playlist.m3u8, which is wrong. Should be http://162.244.80.111:88/hlsme/test.m3u8, which is why it isn't working.
The Kaltura player should be upgraded to latest, i.e: v2.50. This can be done by running:
# yum update kaltura-html5lib
And does not necessitate upgrading the entire server [although, it is recommended]. If you want to only upgrade the player, then after running the yum update commend, you'll also need to update /opt/kaltura/app/configurations/local.ini and set:
html5_version = v2.50
and /opt/kaltura/web/flash/kmc/v5.40.3/config.ini, replacing all .*html5_version and setting v2.50 instead of the currently set version.
Then you'll need to re-run /opt/kaltura/bin/kaltura-front-config.sh
When I streamed using
$ ffmpeg -re -i /path/to/mp4 -c copy -f flv "rtmp://162.244.80.111/kLive/test"
I was able to play the stream using http://osmfhls.kutu.ru/, passing along http://162.244.80.111:88/hlsme/test.m3u8 as the M3U8 URL.
Same when using https://www.hlsplayer.net/
So far I've nailed it down to using version v2.49 of the mwEmbedLoader2. Reverting it back to 2.46 (Using the UI Confs Managment) brings back the source selector.
I've also noted that the players "update them self" when saving changes in the universal studio. Previously I hade to manually click the link for each player to update.
Also, depending on your use case, you might find working with app tokens instead of directly generating KS' to be more appropriate. You can learn about how to use app tokens here:
https://developer.kaltura.com/recipes/app_tokens#
This is not the same issue. My values are the same in those files. So that is not the same issue I am having. I will attempt to forward you the credentials again but I have already email them and nothing bounced back at the address previously provided.
Thanks,
Hi Jess,
Yes you are assumption is correct . i mean Nginx only . Apology for posting the question in wrong subject line .
netstat -plnt |grep 1935 this command runs gave the below output.
tcp 0 0 0.0.0.0:1935 0.0.0.0:* LISTEN 36676/nginx
Trying $NGINX_HOST ...
Connected to $NGINX_HOST.
Escape character is '^]'.
Connection closed by foreign host.
the rtmp url which the livestream entry has in KMC is like.
rtmp://$NGINX_HOST:1935/kLive/?t=a81a4003(Note : i have commented the queryParams = {p}.{e}.{i} in broadcasting.ini file as with queryparam also the rtmp url was not working in adobe FLME)
we have done below scenarios to test with nginx and Wowza both:
1)wowza up,nginx down
rtmp://$NGINX_HOST:1935/kLive/?t=a81a4003
connects and live streams fine to wowza but kaltura player doesnt show livestream
2) nginx up
url in KMC: rtmp://$NGINX_HOST:1935/kLive/?t=a81a4003
when used below url in FLME
rtmp://$NGINX_HOST:1935/kLive/
connects ,live streaming starts in adobe FLME but kaltura player doesnt show livestream
how can we trim the extra query parameter 't' in rtmp url which gets generaeted while creating live entry in KMC.
Thanks for the quick reply.
Thanks Jess,
Will do what you suggested and get back to you.
I really appreciate your help ! Much obliged
Hello,
I use the AngularJS framework :
log_in_service is a service I created for managing the user authentication. I define in it functions to authenticate, get and set the users credentials and save them in the browser.
This variable will contain the list of media that we will get from the media.listAction() call :$scope.list_of_videos = [];
This function sets the result returned by media.listAction() in the above variable :
$scope.set_list_of_videos = function(results){
$scope.list_of_videos = results;
console.log('set_list_of_videos : We have now the list of videos !');
};
This function is a promise. It calls the media.listAction() API and returns the result got from the API call.
$scope.get_list_videos_promise = function(client){
console.log('Entered get_list_videos_promise function')
var deferred = $q.defer();
var filter = new KalturaMediaEntryFilter();
var pager = new KalturaFilterPager();
console.log('get_list_videos_promise : media.listAction call');
client.media.listAction(function(success, results) {
if (!success || (results && results.code && results.message)) {
console.log('Kaltura Error', success, results);
deferred.reject();
} else {
console.log('get_list_videos_promise : ks used = ' + log_in_service.get_ks_user());
console.log('Kaltura Result for media.listAction', results);
deferred.resolve(results);
}
}, filter, pager);
return deferred.promise;
};
In this IF-ELSE, I check whether or not the user is already registered.
If the user is not connected, I call first the user authentication form, save the username and ks in the browser when the authentication is succesful, afterwards I make the call for the media list.
Otherwise I call directly the media list API.
In both cases I create a new client and use the ks saved in the browser.
if(log_in_service.get_ks_user() === ''){
console.log('the user is not logged in');
log_in_service.log_in_modal().then(function(result){
console.log('logging successful and credentials saved in browser!');
log_in_service.saveInBrowser();
var config = new KalturaConfiguration(2086441);
config.serviceUrl = 'https://www.kaltura.com';
var client = new KalturaClient(config);
client.setKs(log_in_service.get_ks_user());
$scope.get_list_videos_promise(client).then(function(results){
$scope.set_list_of_videos(results);
})
.catch(function(error){
console.log("Couldn't get the list of videos");
});
})
.catch(function(error){
console.log('The log in process has failed : ' + error);
});
}
else{
console.log('the user is already logged in')
var config2 = new KalturaConfiguration(2086441);
config2.serviceUrl = 'https://www.kaltura.com';
var client2 = new KalturaClient(config);
client2.setKs(log_in_service.get_ks_user());
$scope.get_list_videos_promise(client2).then(function(results){
$scope.set_list_of_videos(results);
})
.catch(function(error){
console.log("Couldn't get the list of videos");
});
}
Here are 2 screenshots.
The first one corresponds to the first time when I load the page and user is not connected.
Then the user connects herself using the authentication form. The username and ks are saved in the browser.
The second one corresponds to when the user is already authenticated (ks saved in browser) and I refresh the page.
You can see on the second screenshot that the media.listAction() returns a string looking like a KS, and not the media list object as in the first screenshot.
Thanks for you help !
Hi @jitender_sharma,
Please look at the instructions here:
Specifically:
To stream use:
rtmp://$NGINX_HOST:1935/kLive/stream
to get the HLS manifest for playback, use:
http://$NGINX_HOST:$NGINX_PORT/hlsme/stream.m3u8
To use this with the HTML5 Kaltura player, go to KMC->Upload->Live Stream Entry->under Live Stream Type select Manual Live Stream URLs, provide a name and then in the URL input http://$NGINX_HOST:$NGINX_PORT/hlsme/stream.m3u8 and uncheck "Akamai HD protocol.."
Make sure you're using kaltura-html5lib of version 2.48.1 or above.
I suspect you did not choose "Manual Live Stream" under "Live Stream Type"...
Hi @razvan_iacob,
You're welcome, of course.
Keep me posted.
Also, note that once you get it to work, you should configure FW rules to prevent streaming from 0.0.0.0 and restrict to a known IP range, otherwise, anyone could stream from anywhere.
Alternatively, look at the RTMP module auth options so that auth will be required when streaming.
Hi,
You are right, I did not set it up. Truth be told, I did not know to. I will try to set it up and get back to you.
I suspect I have to install apache on the host, then set the paths to the SSL certificate, key and CA in the answer file and copy these files to the same paths the container?
Am I correct? In your instruction above, you did not mention installing apache on the host. I am not sure if the installation was the correct thing to do, and something that I was supposed to know.
~Tim
Can you please explain me more about the appToken concept.
I read that session.start is not the most secured way to get a KS, especially on the client side, because we make visible the SECRET code.
The best way is to, according the doc, use user.loginByLoginId (I use user.login). Isn't it ?
Hi Jess,
Most def i'll add auth to the nginx module, i'm keeping it open for testing purposes. Very good point, thank you !
Is there any way we can restore the permission by reinstalling Kaltura on same server or script to run on the server to recover the permission?