classtranscribe / FrontEnd

The React + Redux Frontend for ClassTranscribe
https://classtranscribe.illinois.edu
Other
25 stars 28 forks source link

Dynamically extract m3u8 from Kaltura link #427

Open angrave opened 3 years ago

angrave commented 3 years ago

Use partnerID + videoevent ID to get the m3u8 stream URL it would be useful to put that in the new open source player, so the player can be instantianted with videosrc=kaltura/123456/1_xyxyxy (there is a longer conversation in Teams about this)

harsh183 commented 3 years ago

From my notes

[serviceUrl]/p/[YourPartnerId]/sp/0/playManifest/entryId/[YourEntryId]/format/[StreamingFormat]/protocol/[Protocol]/flavorParamId/[VideoFlavorId]/ks/[ks]/video.[ext]

Ex. https://kmc.kaltura.com/p/1359391/sp/0/playManifest/entryId/1_3z407kcc/format/applehttp/protocol/https/flavorParamId/301971/manifest.m3u8

Replace the following parameters:

serviceUrl - the base URL to the Kaltura Server
YourPartnerId - Your Kaltura account publisher Id. (Can be retrieved from the Publisher Account Settings page in the KMC).
YourEntryId - The Id of the media entry you'd like to retrieve.
StreamingFormat - See the list of available formats in the table below. This parameter is optional and defaults to /format/url
Protocol - Whether video is to be delivered over HTTP or HTTPS. See the list of available protocols below for additional options. This parameter is optional and defaults to /format/http
VideoFlavorId -  The Id of the video flavor you want to download. If supported by the streaming format, multiple flavors may be comma-separated.
ks - A valid Kaltura Session. This parameter is only required when the media entry has an Access Control defined to limit anonymous access to the media.
ext - The file extension of the video you wish to retrieve (For example, mp4, if the video flavor is an MPEG4 file or flv, if the video flavor is an FLV file.)
angrave commented 3 years ago

https://www.uis.edu/technology/uislive/ has a link to https://uis.mediaspace.kaltura.com/media/t/1_j82of7xw However the m3u8 URL is event dependent. Pramod has some javascript to get the m3u8 link from a typical video link; however the 't/' mediaspace links are unusual Kaltura video links and additional investigation is needed.

harsh183 commented 3 years ago

How did we get it for the previous bot meeting?

angrave commented 3 years ago

In the last meeting we manually extracted it during the event. The following looks relevant- https://knowledge.kaltura.com/help/how-to-retrieve-the-download-or-streaming-url-using-api-calls (By the way,I've asked Pramod to work on this)

angrave commented 3 years ago

Seems to be reasonable for the live broadcast link... curl -v https://kmc.kaltura.com/p/1371761/sp/0/playManifest/entryId/1_j82of7xw/format/applehttp/protocol/https/flavorParamId/301971/manifest.m3u8

< HTTP/1.1 404 Not Found < X-Kaltura-ACP: 1284591 < X-Kaltura-App: exiting on error 36 - The given entry is not broadcasting, Entry [1_j82of7xw] is not broadcasting < X-Kaltura: error-36

PramodJoshi commented 3 years ago

https://uis.mediaspace.kaltura.com/media/t/1_j82of7xw is little tricky because 1_j82of7xw is not the entryId. I believe it's 1_38igcljo.

Screen Shot 2021-08-26 at 11 43 50 AM
curl -v https://kmc.kaltura.com/p/1371761/sp/0/playManifest/entryId/1_38igcljo/format/applehttp/protocol/https/flavorParamId/301971/manifest.m3u8
*   Trying 192.58.252.112...
* TCP_NODELAY set
* Connected to kmc.kaltura.com (192.58.252.112) port 443 (#0)
.....
.....
angrave commented 3 years ago

It is interesting that the mediaspace live page has a backup (recorded) video whereas curl -v https://kmc.kaltura.com/p/1371761/sp/0/playManifest/entryId/1_j82of7xw/ complains that it is not broadcasting. I assume that's the other entryId you found. [First and foremost we just want to support actual live event streams]

[Also that documentation says kWidget.getSources() is a reasonable way to get the current source; but that method does not exist on the uis page player]

PramodJoshi commented 3 years ago

It is interesting that the mediaspace live page has a backup (recorded) video whereas curl -v https://kmc.kaltura.com/p/1371761/sp/0/playManifest/entryId/1_j82of7xw/ complains that it is not broadcasting. I assume that's the other entryId you found. [First and foremost we just want to support actual live event streams]

That makes sense.

angrave commented 2 years ago

Another example; this givesyou the m3u8 for 1_qw0b0izr https://cdnapisec.kaltura.com/p/1371761/sp/0/playManifest/entryId/1_qw0b0izr/format/applehttp/protocol/https