Harnessing FOSS in an End to End Online Video Platform
This is a modal window.
Das Video konnte nicht geladen werden, da entweder ein Server- oder Netzwerkfehler auftrat oder das Format nicht unterstützt wird.
Formale Metadaten
Titel |
| |
Untertitel |
| |
Alternativer Titel |
| |
Serientitel | ||
Anzahl der Teile | 150 | |
Autor | ||
Lizenz | CC-Namensnennung 2.0 Belgien: Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen. | |
Identifikatoren | 10.5446/34450 (DOI) | |
Herausgeber | ||
Erscheinungsjahr | ||
Sprache | ||
Produktionsjahr | 2015 |
Inhaltliche Metadaten
Fachgebiet | |
Genre |
FOSDEM 201539 / 150
3
5
9
11
13
14
15
16
17
18
19
20
24
26
27
28
29
30
37
41
42
44
48
50
54
62
64
65
67
68
69
71
75
78
79
82
83
84
85
86
87
88
89
90
94
96
97
103
104
105
107
108
113
114
115
117
118
121
122
123
125
126
127
129
130
131
133
136
137
138
141
142
147
148
149
150
00:00
QuellcodeStreaming <Kommunikationstechnik>Architektur <Informatik>Demo <Programm>Front-End <Software>User Generated ContentDigital Rights ManagementDatenverwaltungWebcamSynchronisierungEinfach zusammenhängender RaumPortal <Internet>WebcastingLineare AbbildungComputerEingebettetes SystemDokumentenserverCodeMotion CapturingDesintegration <Mathematik>Mobiles InternetFehlerkorrekturmodellDistributivgesetzContent ManagementAnalog-Digital-UmsetzerOpen SourceMaßstabDifferenteKartesische KoordinatenMultimediaWeb SiteCASE <Informatik>AnalysisEinfache GenauigkeitDistributionenraumProgrammbibliothekBasis <Mathematik>Streaming <Kommunikationstechnik>Zentrische StreckungMultiplikationGenerizitätZusammenhängender GraphEchtzeitsystemWort <Informatik>Generator <Informatik>Front-End <Software>Ordnung <Mathematik>REST <Informatik>TermSpeicherabzugOpen SourceFokalpunktMultiplikationsoperatorUnternehmensarchitekturVersionsverwaltungProgrammierspracheKontextbezogenes SystemDemo <Programm>MaschinenspracheProgrammierumgebungSystemplattformServerComputerarchitekturFehlermeldungTypentheorieQuick-SortVideoportalStatistikGrundraumDatenbankClientÄhnlichkeitsgeometrieIntegralInformationsspeicherungKomplex <Algebra>MereologieUniformer RaumARM <Computerarchitektur>Befehl <Informatik>XMLProgramm/Quellcode
06:15
Architektur <Informatik>Streaming <Kommunikationstechnik>QuellcodeSummengleichungSpielkonsoleProgrammbibliothekDienst <Informatik>VolltextMereologieInformationsspeicherungStapeldateiATMServerMultimediaLastHolographischer SpeicherMetadatenTranscodierungSpezialrechnerBimodulBroadcastingverfahrenWebcamDatenbankAutomatische IndexierungElektronisches ForumFAQPhysikalisches SystemEndliche ModelltheorieOpen SourceWebcamSystemplattformServerInformationDemo <Programm>RahmenproblemElektronisches ForumQuick-SortThumbnailFront-End <Software>EntscheidungstheorieDatenbankBimodulMultimediaFunktion <Mathematik>InformationsspeicherungVerschlingungÄußere Algebra eines ModulsLastCodierung <Programmierung>Automatische IndexierungWidgetDateiformatProgrammbibliothekVirtuelle MaschineProgrammierungStapeldateiDatensatzKartesische KoordinatenBildgebendes VerfahrenEchtzeitsystemE-MailQuellcodeElektronische PublikationVerkehrsinformationDebuggingGanze FunktionSpeicherabzugProgrammierumgebungProzess <Informatik>Zusammenhängender GraphAnalytische MengeProjektive EbeneSkalierbarkeitZentrische StreckungRechenschieberCASE <Informatik>QuaderVarietät <Mathematik>Holographischer SpeicherBroadcastingverfahrenStreaming <Kommunikationstechnik>DatenverwaltungIntegralProgrammierspracheAtomarität <Informatik>Fortsetzung <Mathematik>Service providerRechter WinkelARM <Computerarchitektur>TranscodierungComputerspielSchnittmengeEinfügungsdämpfungSystemaufrufComputerarchitekturLie-GruppeUnendlichkeitCoxeter-GruppeLastteilungLinearisierungWort <Informatik>Programm/Quellcode
12:26
Streaming <Kommunikationstechnik>QuellcodeBenutzeroberflächeMenütechnikFreewareQuick-SortProzess <Informatik>QuellcodeOrdnung <Mathematik>SoftwarewartungStreaming <Kommunikationstechnik>Produkt <Mathematik>SpeicherabzugSystemplattformTermDateiformatZusammenhängender GraphParametersystemBitEndliche ModelltheorieOptimierungsproblemTouchscreenGüte der AnpassungMereologieProgrammbibliothekKollaboration <Informatik>Tablet PCProjektive EbeneDemo <Programm>Holographischer SpeicherSoftwareInstallation <Informatik>Fächer <Mathematik>SichtenkonzeptMultiplikationsoperatorEinsNotebook-ComputerWhiteboardEreignishorizontWald <Graphentheorie>Programm/Quellcode
15:29
QuellcodeStreaming <Kommunikationstechnik>Offene MengeStichprobeFreewareProdukt <Mathematik>KommensurabilitätDatenflussProtokoll <Datenverarbeitungssystem>ServerIntegralAutomatische HandlungsplanungTouchscreenRechter WinkelNatürliche SpracheDateiformatHolographischer SpeicherFront-End <Software>CDN-NetzwerkProgramm/QuellcodeComputeranimation
16:32
Streaming <Kommunikationstechnik>Open SourceMultiplikationsoperatorExpertensystemGewicht <Ausgleichsrechnung>GruppenoperationServerSelbst organisierendes SystemTranscodierungDienst <Informatik>SystemaufrufNotebook-ComputerParametersystemSystemplattformWasserdampftafelPunktMultimediaRechter WinkelAtomarität <Informatik>InstantiierungURLEindringerkennungMetadatenProgramm/Quellcode
18:49
Streaming <Kommunikationstechnik>QuellcodeRuhmasseOffene MengeBitrateDateiformatProfil <Aerodynamik>Open SourceEndliche ModelltheorieMetropolitan area networkURLMarketinginformationssystemZweiMultiplikationsoperatorDatenbankRechter WinkelBildschirmmaskeNatürliche SpracheGeradeAutomatische HandlungsplanungServerProgramm/QuellcodeComputeranimation
20:01
User Generated ContentWebcamSpezialrechnerSynchronisierungStreaming <Kommunikationstechnik>QuellcodeOpen SourceMaßstabInformationsspeicherungStapeldateiMultimediaServerProgrammbibliothekSpielkonsoleDienst <Informatik>TranscodierungVolltextMereologieATMLastHolographischer SpeicherBimodulAutomatische IndexierungKlasse <Mathematik>Analytische MengeSoftwareentwicklerSchaltnetzVirtuelle MaschineCoxeter-GruppeComputerarchitekturServerSchlussregelProgramm/Quellcode
21:07
StichprobeStreaming <Kommunikationstechnik>QuellcodeClientWechselsprungSoftwaretestVersionsverwaltungMenütechnikMeta-TagInklusion <Mathematik>Offene MengeMailing-ListeServerUniformer RaumInstallation <Informatik>Rippen <Informatik>Physikalisches SystemZweiBildschirmsymbolClientProgrammbibliothekMereologieSoftwaretestVersionsverwaltungCoxeter-GruppeKartesische KoordinatenInstantiierungWeb-SeiteFormale SpracheZusammenhängender GraphSpeicherabzugSchnelltasteSystemplattformSystemprogrammsinc-FunktionProzess <Informatik>DokumentenserverGanze FunktionProgrammierungBildgebendes VerfahrenTermTopologieWort <Informatik>Wald <Graphentheorie>Rechter WinkelQuellcodeAutomatische HandlungsplanungSoftwareentwicklerKlasse <Mathematik>Programm/QuellcodeComputeranimation
25:30
GoogolComputeranimation
Transkript: Englisch(automatisch erzeugt)
00:06
Hi, my name is Zohar. I'm with Kaltura and this talk is about how Kaltura is basically a Platform that packages up a lot of different open source component and a lot of different practices
00:24
In in some new components that we've introduced ourselves in order to simplifies and unify in order to simplify and unify And provide a cohesive single platform to answer video
00:41
Requirements for any type of video application, so it's We'll probably we'll basically do a quick. What is Kaltura and we'll talk about the architecture And hopefully do some demos and discussions So the premise of why we why we started Kaltura at all is because online video
01:01
And video in general is actually very complex There's a lot of different requirements. There's a lot of different solutions, and it's very very hard to scale so even this the the very simple use case of just taking an FFmpeg and Running it through a hundred thousand videos becomes a problem, and so how do you do it at scale?
01:21
How do you do it reliably and then how do you handle them all the other stuff that is required in? distribution and so on So so Kaltura was basically built to provide a platform to answer all those needs And basically our approach was there needs to be a single server solution
01:42
so a one back end that is basically Exposed through API's and then based on those API's applications for different industries and different practices will build customized solutions, so Everything is always exposed with the same rest API
02:01
And we'll see more about this in a sec. I don't know why it shows The mailbox is here, but those are supposed to be errors So streaming video workflows right so Again, you're going back to the mission statement, right?
02:22
It's all about solving the the scale problem with video if you just have two videos or three videos or if you want to do A home library. There's there are enough solutions out there What Kaltura was said to solve is how do I do it at scale in a situation where for example if I'm a Large broadcaster, and I have a lot of VOD assets and a lot of live channels
02:43
And I need to coordinate and manage all of them and create end-user applications and collect the end-user statistics Distribute video to all sorts of websites and so on and do it all and manage it all sit in the same way Then you basically end up doing a lot of different workflows, so how do you manage those workflows and that's basically
03:04
What we set out to do in terms of What are the design guidelines of the platform? Open-source it's all a GPL version 3 It's as a design guideline the focus was around how do we solve problems that are scale problems?
03:24
so again not like the two three videos or a home library, but you know 10,000 videos or a distribution for a university or a distribution for an enterprise with you know thousands of employees generic versatile or in other words basically become the Swiss knife for video applications, so
03:45
One back end with a unified API that allows you to create applications that are cross industry cross Use cases without having to worry about the underlying how do I manage FFmpeg? How do I work with this storage? How do I work with that? distribution API
04:01
So again API is first and then cross industry so Ever since the beginning we actually focused on trying to solve multiple solutions at the same time So we actually started off with education and media and we expanded into enterprise and doing Some more things around others and in real time today
04:22
But the idea was basically At the core premise of culture was basically the idea that yes video is complex but even though the use cases and practices of how do you Take a video and Experience it within the end-user context would be different in terms of the experience the back end of handling
04:45
The video is actually the same and so How do we work with enough industries and enough? End-user types and converge those practices and use cases into one unified platform And the last thing was actually released frequently. So we actually
05:03
Caltra is being released on a bi-weekly basis. So basically every other Sunday there is a new release up And this is a Rather new but as we go more and more into live applications, how do we become more real-time and support?
05:27
Problems like real-time analysis of video and being able to Collaborate between multiple cameras for example, so use cases like that So in terms of the platform architecture The core which are basically the servers so think about things that for example running f of MPEG or the database
05:47
And things like that. Those are basically in the core. Everything is then wrapped through a unified rest based API We have an automatic client libraries generator that basically runs automatically every time
06:01
There's a new feature edit or something like that and those generate client libraries in many different programming languages. So If you're writing an application, you can use a native application to your programming environment But it's always kept up to date Then on top of that we have all sorts of widgets you've seen earlier today the the video player
06:26
There's uploaders and recorders And then we've built applications on top of them and there are many different applications both from the community as well as our own What's interesting is? That the API approach is actually the same in the backend as it is in the front end
06:44
So just like applications are using the API to make holes to the server For example to access database records and things like that. The backend applications are doing the same so backend applications like batches Which are Asynchronous systems that are running things like ffmpeg or email are using the same API to actually access the database
07:05
There's no coupling between any component within the system, which basically allows for infinite scaling and very agile scalability So What are the platform nodes
07:22
Basically if we go back to the slide For the architecture, right? So what are the Servers that are running in the cluster. We have a load balancer, obviously The front machines are the machines that are basically handling the API layer the and serving the applications So players and things like that
07:43
batches are asynchronous systems that are basically running things like transcoding or Notifications or email sending Sphinx, which is a full text search Indexing server An open source component a DWH, which is the analytics environment
08:03
It's basically used for log processing and database for both VOD and live and we're using multiple components here MySQL or What's the the new that was replaced and or Mariah DB Master and slave obviously and then the NFS to handle
08:21
Storage and then we also have solutions for Supporting other use cases. There's a an interesting engines model module that we recently released And the media server which does more real-time and live So other open source projects we're using
08:40
You've heard a lot about media info today F of MPEG men coder MP MP4 box socks and actually a Variety of also commercial encoders. So we have integrations with all of them and Caltra is basically has a Layer in top of inside of the the batch manager. There's basically the Caltra decision layer and we're basically managing those
09:06
Transcoders in a way that based on the information retrieved from media info We know which encoder is better to use for what format and export and how to Improve the the output of each and there is also kind of a waterfall fallback between them image magic to manipulate
09:25
images You know a nice anecdote about this thumbnails in culture are done in real time. So for example if I need to get a specific frame from a video file instead of You know having to pre-process the entire video file and then access only frames that I have
09:44
indexed cultural will actually on real time will go into your source file and generate the thumbnail for you and then you could also in real time do all sorts of manipulation like, you know trim the The thumbnail or make it resize it and things like that. I mean, obviously it's all cached
10:04
Both on the CDN as well as the server Nginx and the Nginx VOD model. So you've heard a lot about different problems Like How do I take a video and chunk it and serve it as HLS or how do I do?
10:20
HDS or how do I do dash? How do I do it in real time? How do I work with those formats and serve it correctly with every other? For every other system. So this can become a big headache we recently Nginx we found is Very efficient in that but it lacked a solution that actually knows how to do those things how to repackage
10:44
And how to create those things. So we basically created then recently released the Nginx VOD model There's a link at the end of the presentation, which you can find Red 5 or any alternatives like Wowza Is for a live broadcast and webcam recording the cultural pro library, which we talked about
11:04
Then all sorts of libraries that we use culture is mostly PHP based on the server side And there's a bunch of other programming languages, but PHP is the core MySQL or Mariah DB and Sphinx Monit and then for the debug DWH, like I mentioned before we use a couple of solutions up in Tahoe can Sandra and sparks
11:27
Some notable references before we jump into a demo if you want to So essentially if you want to get started and try out Caltra To install it. There is a link over here. We we provide RPM and DAB packages that will soon be
11:46
Stable I guess using chef we also have Recipes for chef and there's a live community. You can get support on the forums or on github there's a knowledge center with tons of documentation if you want to see the
12:01
Nightly builds or bi-weekly builds status reports from the CI are there and if you want to play with the fun libraries over here you can do here another interesting design guideline while you set up is You want to you can start switching but
12:21
another interesting design guideline is Whenever we work on another open source project like the engines model, for example We actually try to build it in a way that is reusable outside of Caltra to so it will be Not just valuable for the community the other community like with engines to the engines community But also because it makes maintainability much easier with a platform
12:44
That is so big in terms of the different components that it leverages and the different solutions that it involves you need to find a way to Segment things and make them easier to maintain by people who are outside of the platform community so for example, the player library was actually built in collaboration over the years with Mozilla and Google and
13:07
And it's actually the player that runs inside Wikipedia And so a bunch of a lot of our different components if you go into github slash Caltra You'll see all sorts of projects there and they all basically form the platform
13:21
But each project may actually be used on its own as well All right, so this is Jess Hi everyone. So I'm Jess. Thank you for joining us on this lovely sunny afternoon I'll be showing as much as the product as possible while we have time. So as I mentioned before
13:44
Transcoding video is complex and I think this screen Shows part of that complexity because if you look at it This is the source entry that we got and we need to transcode it to various flavors and Each of those are different parameters to FFmpeg or whatever transcoder we're using
14:05
So it's a pretty complex process. You can see here the warnings that we're getting per flavor The reason why we need flavor is of course is that we have various devices So we optimize per device The playback on iPad will not be the same as on my laptop or on a tablet or an Android and so forth
14:23
So we utilize FFmpeg and the other Free party software that we're using in order to optimize the source video as best as possible per source to the end device So what I'm showing here is basically what needs to get done for that to happen. That's our a big portion of our core product
14:43
As far as we have 10 minutes good As far as demo in so let's talk a little bit about the nginx model that we've just introduced What it does is it's able to play to create on the fly Manifests for dash and HDS and various other formats so that they can be played
15:04
It's not directly tied to our platform So it can be used independently and there is an RPM package that you can install Outside our platform and of course you can integrate it with cultural platform, which is of course the optimal solution
15:23
So, let's take a little entry here This one's become quite famous. Everyone uses it to demo Bunny movie, I'm a bit scared of it myself So this is currently playing HDS
15:42
You know what? Let's put it on full screens at all. We Guess nicer, right? okay, so Not this
16:05
So just to to explain the integration with nginx basically, what we do is we have our server where the entry is saved or else it's saved on the CDN probably a CDN and What our player does is ask for a manifest a manifest is just basically usually an XML
16:25
But it can be of other formats depending on the protocol you're using And let me show it to you On the back end where things are simpler at least for me Let's view this so currently I'm just making a call using CRL which I guess everyone's familiar with
16:47
To a specific asset that we have Kultura's API is entirely restful. So you can see that the service name we're asking for here is play manifest Which is exactly what the player would do. Our player would say, okay, let's go to the server
17:01
What's my play manifest and then it'll know where to play from? So let's just take a look at this All right, so we can see here that it's an XML as they said and It's got a lot of metadata in it and it's got the URL for the media and
17:21
What you can see here as I said, there's one entry but a lot of flavor IDs right per device Optimized per device so you can see here that this is my entry ID like so Should have brought a mouse and All these are sub flavors of it
17:40
So they can be optimized per device so Potentially if I'm watching it on my laptop I'll get this You might get this on your iPad and someone else will get some other flavor And of course, it's very flexible so you can adjust the flavors created as pair your needs So for instance an organization might say well, you know, I don't use iPads at all
18:04
All my employees are in within my land and they're all watching it on their desktops No point for me to waste time producing these other flavors so we can produce just the one and someone else may say You know, I have very very special needs for a very specific device and I have my own
18:22
Transcoding expert. I just need you to give me the platform. I'll give the parameters myself fine You can create using our API or using GUI. You can create your own customized flavor if you know what you're doing So that's basically the idea of it we can see that it the same entry if I take
18:41
this URL here that I've done in CRL And I'll just put it on this dash player here that I happen to have here And so it plays from an external
19:00
Player right from a JavaScript dash player so you can see that It's just it's the same exact URL and what happens is that this will go to culture a server and for that particular Profile you'll say okay. Just a second. What profile are we asking? We're asking for impact dash. That's good Let's see how we handle that
19:20
specific Serving profile and then we'll go on to our database We'll say okay for that We need to go to nginx nginx is the one that knows how to serve this particular format And then there'll be a relay called to nginx who'd actually be the one playing it So this is the model that we have this is what we based on nginx
19:42
It's of course open-sourced. It's made by a very bright man called around corn blow You're most welcome to look at it. I have five minutes Just so you know, I want everyone to know how much time we have
20:08
That's quite correct another note that I wanted to mention while I was looking at this Presentation here. You just thought you love effects, don't you?
20:25
Okay, as far as these nodes I just want to clarify that our architecture allows Segment eyes your cluster any way you want it So this is just a suggestion of on how you should segment it
20:42
But you could have them all on one server. Of course, it wouldn't be redundant, but for development purposes, that's fine You could decide that your Sphinx runs on the same machine as your analytics or whatever other combination You're comfortable with so this is the mere suggestion. It makes sense to do it that way, but it's not a must
21:01
So I wanted to touch on that briefly The last thing I want to show in my minute and a half that's left I guess is that as Zora mentioned we have client libraries bindings for a lot of languages Let me just move to our CI system for a second. So our CI system actually has two parts it does
21:25
Some local tests on a cluster much like the one on the presentation the same spec of as the one on the presentation But it also integrates with Travis Anyone familiar with Travis CI? I hope so. It's a good tool if you're not check it out and
21:41
Whenever we push a new version It auto builds Push or whenever there's a pull request. It all builds the libraries for all these bindings We have a few more actually we're in the process of integrating the rest of them We have a 10 or 11 client libraries. So
22:01
Whenever something fails you can see it and it'll also be portrayed within that CI and the repository for the Sphinx or for instance if I go here to our github repository Okay, so you can always see the current build status from here to
22:25
As far as our tests we utilize the API as Zora mentioned our entire platform Kind of utilizes itself when doing stuff because there's the API and the various components make API requests to them to the core So essentially anything that we can do internally as far as our applications can be done by an external person
22:47
Using that API so pretty much all of it So that's important to note and whenever we commit something we run it for all the tests Just to show how a log looks like and then I'll
23:01
Ask if anyone has any questions, so think about it now Anyways, it releases a lot of testing processes and we have a lot of these as far as bindings So let me just open that page Just so you can get on Quick glance of all the icons
23:21
I guess
23:46
Yeah, Ruby jams
24:11
You can always Right, so any questions, I was that clear was I
24:23
Know
24:42
So just one note since nobody has questions We're always looking for volunteers So we're very happy to get anyone Client libraries. We actually need someone to correct the Ruby tests Go volunteer
25:01
Yes, we love pull requests we love them so much that I made this ugly but very functional dashboard so that Our guys can see what's going on and who's pulling and who's asking Real-time guys, so yeah, we love your pull requests and your issues