bouncer
← Back

Peter Ullrich · 475 views · 16 likes

Analysis Summary

10% Minimal Influence
mildmoderatesevere

“This is a highly transparent technical tutorial; be aware that the 'struggle' is a natural part of the coding process and not a manufactured narrative to sell a specific solution.”

Transparency Transparent
Human Detected
100%

Signals

The video is a live-streamed coding session featuring authentic human speech patterns, including stutters, filler words, and direct audience engagement that cannot be replicated by current AI voice models. The content is a raw, unscripted technical demonstration by a known developer.

Natural Speech Patterns Frequent use of filler words ('um', 'uh'), self-corrections ('no it's not called a media query'), and conversational tangents about Blue Sky and water.
Live Interaction The speaker directly addresses the live audience, asks if the font size is big enough, and waits for chat messages.
Technical Problem Solving Real-time troubleshooting of code errors and server logs with spontaneous verbal reasoning.

Worth Noting

Positive elements

  • This video provides a realistic look at the 'messy middle' of software development, specifically regarding complex multimedia protocols like RTMP and HLS.

Influence Dimensions

How are these scored?
About this analysis

Knowing about these techniques makes them visible, not powerless. The ones that work best on you are the ones that match beliefs you already hold.

This analysis is a tool for your own thinking — what you do with it is up to you.

Analyzed March 13, 2026 at 19:29 UTC Model google/gemini-3-flash-preview-20251217 Prompt Pack bouncer_influence_analyzer 2026-03-11a App Version 0.1.0
Transcript

h hello how is everyone doing all right are you there if you're there just drop me a message so that I know that people are watching two people on YouTube is this big enough I I tried to set up the uh the editor a bit better still trying to figure that out what's best for the stream here it's pretty big now right yeah wait where's my water how are you doing let me know that you're there just send me a message all right I'm going to start because you know people might join in people might come later people might get bored so this is a road commentary of my life just coding what am I even talking about the two people on YouTube if you're on YouTube let me know shoot me a message I was going to put it on Blue Sky is anybody on Blue Sky already I kind of I mean some people are following me you know see seem to be that there's some people around boom all right hello everyone all right so let's begin um so we have started with our new project the twitch clone in Elixir and for that we use membrane and boom box the two libraries that are made for multimedia processing and yesterday we managed to set up an rtmp server here so that means that we expose a endpoint where you can just push your rtmp stream and then we basically convert that to an hls stream so that means that yeah from like our local OBS we could stream directly to that server as an rtmp stream and then our server processes that and converts that to an hls stream which is good for viewing on a website and uh that's what we do here with the boom box thing so we you know have an input and we have an output and we just store for now the output in a temporary folder and you can see in that temporary folder that we have all these segments like we have the index m3u8 that is basically a um a file that you that the live stream request so the the player in the browser requests this file first and this file gives the player all the information they need for like the resolution which codex to use uh and then they also give like the next um segment that the player should play or basically this is the the overview file that has all the information you know about the current file like which segment is being played uh and that kind of stuff and you can see that here we have like a lot of maxed segments and then 164 165 and all these segments are then here and this is basically the the video files like the the chunked video files that then get sent to the player and the player knows how to stitch everything together and uh yeah ideally it will play however yeah let's see um yesterday we had an issue with getting the player to work so this is where we this is where we will continue today and um yeah let's just let's just get started let's just get started okay um I'm just going to start twitch clone and if we do App application UI we get a a stream and then we can run this command to use FFM pack for uh streaming the video that we currently play yeah this is now streaming to our player and you can see in our stream actually we have a couple of segments here like segment zero one two 3 and this is now our hls Stream So if we go to Local Host 4000 now we need to continue here because as you can see you see nothing and that is the issue so I actually think that the issue is here the the type of uh the type of information we're trying to receive because if you have a pipeline like this um like we accept only certain types of uh media queries no it's not called a media query the accept headers well that's the accept header and like if we have our normal browser route we only accept you know sending back HTML and for the API we send back Json but I think we need to create a new pipeline that accepts um let's see maybe that's a that's a type so we can actually like create a new scope uh and this one media okay now we have our stream controller n it didn't work but somehow a type attribute of application empa URL is not supported load of media resource stream index failed that is the issue see see which is funny because let's see well we have a pipeline media so we actually return the segments but somehow the player isn't working actually there is a player here I can even pop this thing out just doesn't play Maybe It's the player you can see here like there's also a video like a a thing let's see whether we can find something with that oh maybe we need to give that player eight type see maybe not if you're there in the Stream right I haven't really there's no message yet I'm not sure whether the people are actually watching you know I'm just going to ramble on until people tell me to stop yeah maybe this player isn't working for us Source type should include the m3u8 file extension and then if the source URL does not contain a file exens you must provide one of the following type hints application XM PG URL maybe that's a Firefox issue let's try in Chrome let's see how this is in Chrome no okay well we don't see an issue with a type but we also don't see a player and there's a video playing ah look there's a blob HTTP is that what we want I don't think so preload Source blob okay anyway how you doing is there anybody there anybody watching or is good to know started installation hls defa layout ah maybe I'm missing the layout here so in in here we have a source htps come on why doesn't this show me anything JavaScript well okay I mean it is actually returning a player but it does not play yeah I'm kind of thinking about just dropping the vitte player for now and trying out the um the hls we actually in we actually install hls anyway so we can also just try to replace this one um or maybe there's no target here no there's an ID Target players stream index M38 and that's what we want right so we have the stream and then the file and it actually reads our stream file and it returns it I mean it's a text I guess that's fine right if it's a text like here we actually we get the index somewhere here and the response is a text I mean it is a text file so that's [Music] fine all cidate resources fail to load this is a Firefox isue Jesus and playing video is just so difficult there's nobody really here right I mean there two people watching here might also just be people who open it and then forgot to close it one person on Twitch really what's this knock oh one person again there's always one person on person on Twitch all right I'm just going to continue but maybe I cut show the the live stream is nobody joins might be a bad time you know but also people join after a while only like usually they only join like after half an hour 45 minutes it takes for people to to really see the stream and then to join in I don't know tweeted about it can anybody out there all right diff Target oh okay something is playing here wait now we can see it I think the plays in line that is what we were missing but now again doesn't really show anything oh okay it's loading and [Music] then they're doing something come on it's loading all the segments but it is not [Music] showing not showing the video okay there's some errors here a barded by the user agent user Crest all right hey uh good to see you again okay let's do a little architecture thing cuz I understand it's not that easy oh this is from our last one actually this was a nice nice little sketch let's go over here so basically what we doing is we are yeah creating a twitch clone right so let me write that down here twitch clone in Elixir and the idea here is that we have a like a video source and that could be just a video file or it could be OBS so this is basically where we you know take our video like in my case I'm streaming from OBS here but for local development I'm using a file that I'm streaming to the uh to my server let's make this even bigger come on okay and uh so from this video Source we create like so we have our our atmp server that's what this is called and This rtmp Server run with membrane plus boom boox so these are the libraries we using and our uh video source is actually sending the information to our rtmp server so this is running inside our application and this one just accepts the packages like it you know has an open port and then when you send something to it it will actually process it and um yeah it will actually accept the the video basically the this the parts the packages and now boom boox actually converts this to a hls stream hls stream and these are this is done by Boombox so from here to there this is done with boom boox and the hls stream is basically files that are lying in on our local server uh for example the index what you like the index M3 u8 you might want to include the twitch link on your Twitter post couldn't figure out how to launch it from the embedded stream okay no problem um also YouTube will be good I [Music] guess here pet and [Music] code uh uh um yeah this one and yeah because people can also watch it on Twitter that's why I'm not really giving an external link because otherwise Twitter's going to De boost it all right boom all right YouTube um yeah so H streams that's chunks I think so yeah um so what you see here basically is that you have like an index M38 file and this is what your player gets when it's starting so that's the first file it's getting and we have that running or lying over here so this is basically this information that is getting and it has like a resolution here like average bandwidth um codex which a codex to deoy and then it has a link to the next file and this file is basically like the index or the table of content so to say you know of which segments are currently playing so you can see here like Max segment 115 116 it's actually changing every second 117 so these are like you know uh one file per second and this holds the information about the actual Stream So when your player connects to our hls stream so actually let let me finish the uh the thing here because we have a we have a controller here and this is a phoenix controller and this one basically serves serves the uh the hls stream but that means that it actually serves these files so we get the index H M38 we get something like a what do we call it like here this one this file and this file contains information wait so can you why is this so difficult to just like move things all right and well the index has this file and then this file has a bunch of other files and they're like they're called maxed segment you know X m4s I think that's the if we look here yeah something like this one so these are all the per we have a bunch of those background green yeah this one brings to front there you go so yeah so this one has a lot of these files and when our player yeah it's not quite a linked list because we have this index file here well not index but the kind of table of contents file and this one has a link to all the current segments not all the segments just the current segments and you can also see that it stops when our stream stops actually so let me start this one again and now it starts over so yeah when our player connects to this then it knows oh okay so the current SEC second that is running is second three so I need to request this file and then I can show it in my player and then uh so this basically tells the player which files to fetch yeah and our Phenix controllers actually is just serving these files and our hls stream is like creating those you know creates and uh this one is just serving serves all right and then what we have in our application is a live view and this one renders the like a player HTML you know plus player so when a user connects to our server then they connect to the live view and the player then requests the information or the uh the files hls files files from the controller and the controller serves all these files yeah so that's basically our setup and uh yeah we already set up the rtmp server yesterday and we managed to push video to it that's what we do doing here with my uh FFM command like FFM is now streaming this file to uh rtmp and we also managed to set up the hls stream so it's actually uh yeah it's running and it's creating our files here let me move this a little all right and we also set up the Phoenix controller and we kind of managed to get the player to run yesterday but now we for whatever reason um broke it and this is where we currently where we're struggling so you know that's why like here you see the player is starting but then it for whatever reason it's not really showing the files however it is requesting all these files from our Phoenix controller here like so I would say uh let's take a step back and go back to the membrane examples because in in here they actually give you they have like an um they have a player here that they use somewhere like the hls HTML this one so in here they I'm just going to copy paste this stuff and see where it works so I'm going to take this one away I'm going to use the old hls and our source is dream index okay let's see whether that works so it's restart we also always need the Phoenix update [Music] ignore cuz otherwise it's reloading the player twice but we have the same issue here it seems like we have the player and it actually request all these segments but it's not just it's not starting to play it's actually loading the new segments or maybe I don't know maybe there's a [Music] yeah I mean our player this is still running okay is requesting the segments it's returning the segments well okay it's just data this one actually is the correct file yeah I don't know why this is not working so it's the same issue that we had also with the other player so it's not our player yeah maybe also our video needs the update ignore I mean it said it would take a couple of seconds until it's running but it it's just not just buffering terms if I do full screen no I don't really have any like blocked H anybody any ideas why I mean if we look at the example here this is our example like it it just has a play function which fetches the video ID like the player it fetches the value the source and then it attaches the media and that should kind of work I mean maybe let's take away the the script that runs when it's actually starting so now if I hit play nothing happens or maybe I need to hit this play and is doing the same thing as just buffering buffering buffering oh why and now it's black yeah let's let's do the following so I know that um vit stack here that's the other player that I use they have some example streams oh uh loading event State introduction accessibility architecture now where can I components like I I'm just going to use a an example hls stream so that I can test your player examples I'll play a demo here I have well I have a source but that's an mp4 uh here API reference no I want to have an hls stream that I can just use for for testing purposes preset hls here we go so I'm just going to use this and instead of doing stream yeah I'm going to use the the pre-build hls and see whether that works oh okay that worked yeah so interesting our player works it's not not the player's fault something is off here I mean it's getting segments they also have different type they have mp2 t type I mean our other files were m4ss m4s let's see example boom box examples I mean we just copy pasted [Music] our here broadcast as hls [Music] yeah input maybe we're missing the hls part here but cuz when they do no I mean they understand okay this is an m 3 u8 so they understand but we can also uh Define the exact format we want here maybe we need to do that just in case right Al gor yeah we could we could check that one out let me just um let me just do this here let's restart our application restart our yeah I just want to check M like maybe for whatever reason we were missing the right um format but it doesn't seem that way no it's still doing the same thing here uh the other thing that I could think of is that maybe we need to give it a fully qualified URL so like this stream in next let's see what that does so we want to stream index and play ah well okay it's buffering it's loading oh I think I think like our type like we sending back the files as plane type you can see here maybe that is the issue like it shouldn't be plain it should be um well I don't yeah I don't know what they expect here but you saw when we had the other the other URL running they got back where is it yeah well they got like a different type of file here they got an MP 2s so what I think what we need to do in our stream controller is not respond with a text but how do we do this we send a response can we give a well this is a file how do we send how do we set the type response header response content type okay so in our content type is um yeah what's that content type m4s no like our files are m4s I mean but it also depends right because sometimes it is uh m3u8 sometimes it's m4s yeah uh the m4s format is there a it's considered a mind type okay so M4 is shorthanded for M 4 should be audio MP4 right let's let's see I'll I think it was aloria right TV was it that one agoria they really Al go they have like a aloria they have too many L's in there algolia Doc is it that one no Alor Alo al. Alora okay that's that's this one and if we go to GitHub is it searching oh is it no but isn't this this thing here is Alor TV that's no bounties Made Simple for developers grow no that's not it but it's written in elixia yeah Jesus what's the name of that freaking thing TV just Elixir TV how we build Alor TV live streaming for developers yeah I mean that's it right all Gora TV yeah all right I think that's it and yeah so let's see what they they must have a controller somewhere Al go web controllers uh hls content controller that's what we want and uh they have an index but we want to have a oh okay they only have index interesting delete yeah so they [Music] do so what they do here is if the string ends with m43 that's what we do they do a handle partial request and otherwise they do a file request and in here they do if the string ends with m3u8 they do the playlist content type nil pass it yeah otherwise okay [Music] so yeah so we need to do either a partial request or a file request so let's do the file request first and that is in the LLC controller here so they get the hls folder path and then they read the file and that's it that's what they return and if they do a partial request then they get the partial and that's it wait for partial ready oh interesting so they run that in in ads I think they have the yeah I don't know the delay is really terrible isn't it um I also experienced that today when I went to another live stream by Zack Daniels but yeah if if I mean I see you almost immediately on YouTube I think so if I post something yeah it takes like five seconds to arrive in my inbox here if you write something Filipe like I want to see how quickly I see it on YouTube and then how quickly I see it in my stream in the the chat here but also I'm not always looking at the at the chat so you know yeah so actually I mean I saw it pretty pretty much at the same time in my little chat window and on on YouTube so there is just it's not the YouTube to restream connection yeah okay you write ping I write pong as soon as I see it here in YouTube P okay well Thiago send us the the ping yeah moderation activity times reactions is there maybe some but I I checked it already there's no delay It's just sometimes it is just slow yeah maybe we should just move to Twitch everything should maybe happen on Twitch you know Screw the the restream thing it's the delay between broadcast and the viewer that's the problem yeah I think it's from me to you and then back that might be the issue cuz yeah if I if I play the live stream where are we so I'm going to go all the way to the end of the live stream and now I'm going to write pong and let's see how long this takes until it shows on the live stream yeah that's forever I can even see Philip's message before mine yeah no mine is not yet Jesus really like half half a minute or something but that's YouTube I mean yeah now it's there okay oops so when I send it yeah that was like a 30 second infinite Peters yeah I can I can do this maybe I don't know maybe twitch is better you can also watch me on Twitch maybe they're better so I'm gonna I'm gonna I'm going to do this and then see how long it takes twitch yeah was like 20 30 seconds okay I'm going to I'm going to do it again and I'm going to count okay here we go one 2 3 4 five 6 h not too bad 6 seconds yeah ping okay so the we we have established that the the delay is like five to six seconds so that that's not too bad yeah anyway let's go back I I love that this is open source thank you very much agor TV although I cannot remember your name although I kind of did right but then I if you go for al.com okay that is Alora publishing Alor IO and then you have ago IO and that is bounties so maybe the name isn't that great yeah let's code away sorry um so let's see I wanted to understand uh the response type like the the content type that they send back let's see maybe that was in the folder here that's the controller um wait so where is the the part where they here playlist content type where is this defined that should be defined somewhere right here application V vnd Apple MPEG what the heck is that um okay yeah I think I need to Apple HTTP live streaming this page test was created by Walter this okay so they this one has a x m URL with m3u8 files and then I'm just gonna I'm just going to copy paste this I'm just going to say and with yeah I'm just going to put that as a as a Mimi yeah there a lot of people here not Twitter twitch there're like 100 people on Twitch watching me right now oh five and then on YouTube we have uh of five that makes 10 five and five makes 10 and then we have 300 on Twitter which I do not believe at all yeah all right um yeah so let's go back let's go back and we're going to put our content type here boom and uh that's it I think right that was the Phoenix put resp content type this one put resp content type and yeah we just do con and then the type and then we send response and in here I'm going to do the file and the status is 200 let's see how that works okay now I need to go back to my h P Local Host 400 stream index m3u8 so and if I stream this all right I mean the buffering goes faster but still this is not it might not be the correct um meme what's it called M the 6 seconds but Peter can only respond after restream at 4 with of the original Stream So the viewer doesn't get feedback from Peter in 30 seconds minimum yes yeah right because I'm on my side but you on your side so you see me and then I see yeah that makes sense 30 seconds that's a long time it's almost like me being on the moon and you you call to me how long is it how long does it take to send a message to to the Moon how long send a message to the Moon that is so much faster to send something to the Moon than doing the through restream this should be faster this is too slow it should be like two seconds if I can send something in 1.28 seconds from the moon from the earth to the moon so that makes it 3 seconds round trip maybe we should just host it on the moon and then it would be faster all right that's how physics work yeah we all know that the delay to mass is 7 minutes because of the expense I think to mass well the round trip was 7 Seconds it takes 3 minutes and 3 seconds but round trip is 6 seconds yeah well six seven you know whatever yeah but we all know that from the expense all right let's fix this freaking Mimi Mimi type here uh okay let's let's have a look at this one again so um so the get a result okay so they do handle partial request and or handle file request that's BAS basically for the index m3u8 or for the m4s and um the result is a file all right so this is either index or uh the um m4s file and they say if the M3 u8 file like if if that's the M3 u8 then they put the content type which is application this thing so that's only for the M3 u8 ones and otherwise they don't send a response type which is interesting and yeah then they send the the response so maybe yeah let let's do the same I don't know let's do the same um maybe maybe if we just remove this one let's see what happens CU I mean they they also go for for uh compatibility all right I got to restart my stream I guess ah now it works all right that's the is issue but it's funny like the the response type now is XML for m4s and it's always XML but it works so who cares is it I mean maybe it is XML can you believe that they have like m4s files in XML format I cannot believe that but it's working so I'm not going to complain yeah let's see maybe let's see oh I want to see whether my audio is working too how to get started and I usually said well you know install Elixir Tri life book that actually helped a lot and then start reading the Elixir docks sorry if it's too loud but um The Elixir docs they are amazing but they're also extensive you hear this right and they might be overwhelming for newcomers and yes there are more or less introduction sections in there but also those go go very much in depth so sorry it was a little loud I had to configure OBS first uh that is much more condensed than that it is really only like a a very like kind of like a cheat sheet for how to use the language because usually we got that working now I mean the type is XML which is weird I still would like to change that lists and maps and classes you know when yeah okay cool come from hello there I I mean the cool thing is is that we can even start from the beginning again now what is what is happening now play cannot stop working stop working but my live stream is still running but now it's not loading that's the same issue that we had yesterday damn it so it's buffering is that maybe an issue with the um the segments because we don't have them anymore here in our folder they just get overwritten and then it tries to access it but that's weird because it why why why is this happening maybe we should get somebody from Alora TV on this on the stream and then they can explain all this stuff to us yeah now it doesn't work anymore why me hard refresh load H wait this is the other video stream index m3u8 awesome so we had it running we had sound we had video and now it's just buffering okay why [Music] 37 I mean okay what we can try is just restart our uh stream and see whether that fixes yeah I think this is the issue this is about the segment like the when we when we join the stream later we don't have that information in our uh in our temp folder anymore and then the here the the the live stream can actually not get the old segments and I think that's what they handle also here in Alor so they they say okay well what about the like if they want to handle a partial request and then they actually check it in ads they get a partial from ads yeah and then they literally do this get from ads so my question is where do they actually inserted here add hls folder path Okay add partial then they do a f name file name and a but do they hold this whole video then in memory is that is that so where do they where do they use it storage so our LL controller yeah they have ADD partial call back and that is send add partial so many add partials yeah add partial to ads I guess that's how they do it but then they they just store all that the whole video thing in memory I mean they they kind of need to right I mean if if somebody joins the stream and actually if you go to the stream on like YouTube you can actually go all the way to the beginning of the stream right like here this is my stream and if I go to the beginning well it shows me the segment so maybe that's the issue but can we like not do that because I mean this seeking that's what you call seeking it maybe we don't want to have that for our live stream it's just like you go to the page the player load and it shows you the the current time stamp you know that's just how it is um interesting yeah so now the stream is already later yeah do current like twitch yeah how do we do this uh hls jump to C how to seek to live on a live stream okay video current time equals video duration minus one well that's a button I want to have that to begin with yeah video on demand exactly uh that's what we don't want to start of the first fragment in the current level hls levels current level details fragment zero start okay player get current timeline get window here so this one they have a demo and what they want is the stream should start at the end okay the actual Behavior it starts pretty much exactly in the middle of the playlist no matter how long it is that's what we don't want all right okay lot of output so both the good and bad cases well yeah we can maybe in aloa they also to do that U probably in well web they probably have a player somewhere assets J is EPS okay the player here vitte player that's what we want where is the vitte player used there acing mounted life Edge tolerance load eager lock level one cross origin true Place inline true layout yeah the vitte call let's let's just copy paste this thing auto play starts with analytics player start type player current time is the start time and they get the start time from the options current time so where are the options to find here play video options current time yeah all right yeah let's let's move back here to our uh uh uh let's go back to our vid stack player okay uh player jce and then in here we can do high level context thing on that you think might be interesting for others too let me know and I'm happily I'm I will happily add it all right that's it I hope you enjoy this play l run.com everywhere and this is a good idea as well cheers so yeah basically we create our VDC player with a video type video stream type on demand Live Edge Toler the number of seconds that current time can be behind life Edge start and still be considered at the edge the default value is 10 meaning the user can be up to 10 seconds beyond the Live Edge start and still be considered live okay I think this is a good idea let's let's just put this back to the fold then we have an eagle load so that's good actually loads ahead okay seek to Live Edge all right let's let's first have a look at whether this works also give me topic ideas if you want to learn about certain topics that come every maybe our stream has stuffed yeah we need to restart our stream cheers hello there well yeah now it worked again because we still have the old the first segments will help the but let's see what happens in a while when we are a bit further sorry forgot to disable the the sound so now we at like 20 seconds I'm just going to refresh the page and see where that loads well it loads yeah okay and you said uh vitte seek to life edge here okay the live streams are supported by hls provider so we set the stream type the view type to video no we want to have stream uh live sorry want to have live no stream type yeah this one we want to have stream type live live Edge life edes the window from the starting edge of the live stream to the furest seeking part okay that's what we want the h we can also programmatically seek to the Edge by calling the seek to Edge thing yeah I just want to set it as a if we set it as um option why doesn't it work it doesn't and our thing is still running what was the other thing the type video view type what is the view type the view type suggests what type of media layout will be displayed it can either be audio or video well okay we want to have that to video and what is on yeah we don't have On Demand right like we have live yeah that's just video on demand okay we don't want that yeah maybe I need to use your seek to um seek to Live Edge thing because now we uh not really doing anything live yeah okay restart our stream creating a a too app okay now we're in the live I'm gonna flash this out a little bit more but even here it's not working I hope you understand this whole thing is just meant for people to get started with Elixir to understand it's running now start writing hey why this is so hard yeah okay let's try your the the seek to life Edge yeah it had an XML M Ty yeah May yeah maybe you're right this is maybe that's not what we want but let's first try the when we start the player that we just say here play player seek to Live Edge Let's see what happens with when we do that nothing happens yeah okay let's let's try the the mime the response um so if string ands with so when it ends with m3u8 then we do a put resp content type um application so what is an m3u8 that is the I'm going to use what Al Alora is using which is the yeah vnd apple EG URL and otherwise well now we need to figure out what the otherwise is which is our um m4s m4s meme type not meme sorry mime because that is what we're sending right m4s so what is the m4s extension Here video ISO segment all right let's try that one okay now we should be sending the correct MIM yeah we do we send either an EG URL or an ISO segment but again it's just I mean here we get a specified type attribute of application XM URL is not supported load of media resource stream index m3u8 failed what happens yeah so that it's has something to do with the mime type but the weird thing is we don't even we don't even return that particular like here in the con in the there was a a warning says saying that specified type attribute of application XM URL is not supported well okay but we didn't send that back for the index I guess here the M this one this is the index and our mime type response header oh okay it's it's still an EMP URL of course is that what a Firefox is complaining about again is this a Firefox issue no okay you can also see it's just so weird I mean it it manages to download these segments but it's just not loading yeah I don't know huh let's Google this part okay maybe in vitte we need to give it a type like to [Music] say uh like here they actually well this 2018 type stream type view type Source types yeah Philly are you still there you're getting compliments others to let me know I will oh you did oh sorry I didn't see that message just now that's it I hope you enjoy this it's cool that you can even add these uh what is that the twitch icons I can even see them that's pretty awesome cheers yeah oh good well I'm going to be on the stream next week by the way on the Elixir Mentor stream next Friday at least I I think it's live right so if you want to come over and and ask some questions but if it's not live than uh I don't know I don't know all right let's let's figure this one out um so what I see here is that it [Music] supports following is a table of supported media file extensions and types for each provider so we have video here hls m3u8 and then they say we can either use the Apple M URL or the application x m URL that's what we do MP4 [Music] um I'm just going to make it an MP4 video I'm just going to trick it into saying it's going to be MP4 right yeah so then it's live next Friday with Elixir Mentor Al give me a topic ideas if you want to learn about interesting for others too give me topic IDE happily learn about certain hope you want to have a high I hope you think this yeah well again same issue I mean do we maybe need to set that thing up where we just store the segments in ads and when the stream ends we delete the thing but they will require that we I don't know how many gigabytes this is if you stream for like 3 hours it can easily be six gabes of stuff and you don't want to you don't want to keep that basically I started writing this like I mean it's working when we just started the stream but if we join later in the Stream then it's not working like now and then it's just weird like okay let's let's restart our stream let's retry this one because like even now I with the stream just starting I still get the same error so I I think it's just that issue but it's also weird in general like speci if I type attribute for application it's not supported that thing is called run elixir.com load of media resources faed 30ck start it is um very much a condensed version of The Elixir docks basically we don't and I started writing this like three weeks ago after yeah I again I don't think that's the issue really because it's it's just a segment issue so I guess we just need to keep the segment in in um because a lot of now they hear about elixir they hear about life View and Phoenix and they amazed and they want to get started that's how they do it in I personally had situation where people ask keep get in memory where can I go to to learn what to do to get started and I usually said well you know install Elixir trial life book that actually helped a lot and then start reading the Elixir Docks but um The Elixir dos they are amazing but they're also extensive leling and then the longer you stream the longer the resource and then I need to have um I need to have a server with like 100 gab of ram just to keep the partials in there I want to create something uh that is much I mean that's how they do it here in the only very like kind of like a cheat cheet for how to use a language because usually you know people who come to Elixir they already have experience in another language they know how L controll and classes you know when they so they got the hls cont and what they know in their language into Elixir so they want to understand how do I Define a function how do I Define module um how do I you know just run an application how do I run a how do I build a website and I personally love to learn things by just doing them by just like you know diving into them uh and trying them out firsthand so that's why I wrote run Lexi and let me show you what I mean then it all becomes more clear okay let it basically this is uh written with hacks it is hosted on nli it's not on Hax but it's also on GitHub so if you want to contribute to this very much appreciate it um just go to GitHub create a PR and and I will review it and in the last three weeks or so I started writing this and I much just go into the basics here I join I just want to like minut let give you the a cheat sheet of the language you know how to work with L for example uh and I sometimes give a little bit more context you know for example I say well lists are actually linked list and elixir so um they're not as efficient for uh looking up stuff or for appending stuff and so on um but I try to keep it as high level as possible and then I also go to tups you know and also just say well this this is how you can use a tuple magic the core things like Maps modules yeah maybe we should get the Alor pattern CL has an answer to us for us I give a little introduction here like a little first see what they because I just ask you know what like I have a player um the player works fine if I start if I connect at the beginning but then if I connect later it doesn't work what could be the problem and it says it's a common issue with hls live streams when joining Midstream all right the main problem occurs because the play is trying to start from the beginning of the stream which is exactly our problem but those segments are no longer available how can I start so you can fix this in your hls manifest going forward you need to properly set the following direc to be a very start time offset zero precise yes okay what is that how is that in our index links to how to join the community we do not have that also hard when you start like where start talking where can I talk to other Elixir developers how do I stay informed you know which see what happens if I just manually add it which block should I read um and so on wait is my live stream still running yeah it's still running okay that didn't do [ __ ] but maybe that is not my manifest maybe my manifest is this thing here yeah this seems to be my Manifest this just going to be overwritten so just got H okay so then we need to find out how can we membrane hls offset how can we def how can we add that uh the start um let's have a look at the membrane core and then we had the membrane plugin somewhere the hls plugin hls wi is it not H LS that's how you write it yeah hls plugin all righty thanks for joining see you next time so in here okay so it also says external X media sequence this number must Inc increment with each new segment it tells the player which segments are available this okay the media sequence do we have that media sequence 15 I8 sorry so we do have that available and we just don't have this x start thing the time offset I don't know do we manually need cont thing on that you think might be interesting for others to let me know and I'm happily I'm I will happily add it all right that's it I hope you enjoy this um share run.com everywhere and this a good idea as well cheers no that's just the uh the protocol examples okay folks I'm going to head to the toilet real quick I'm be back in two seconds e e all right we're back okay um let's see so maybe we can configure our hls stream um or maybe yeah also we need to to understand how we configure boom box because in boom box we kind of that's where we set up the hls conversion so let's have a look at boom box first config config no that's just the config uh they do give an output yeah output okay so we can look at run see the output for available outputs uh but it's really only hls location it's not like we don't have a way of configuring it that sucks MP4 stream repy yeah okay well then we can't even can't configure our hls pipeline here yeah all right uh yeah what we could just do is um add it every time every time when we return that file we could just manually added like a pended even that would be it but it's just like wow my okay let's see do they maybe they use it in aloro the time offset no they don't use it okay if so yeah what we can do or what we need to set is the time offset that is the offset in seconds to play start playing the video if the value is negative specifies the time from the end of the playlist the offset must not be larger than the playlist duration yeah so we can just set it to minus one or something and and that should work and then it says precise if yes playback starts at the point specified by time offset but does not render frames in the segment prior to the offset right so it kind of starts at the latest segment it doesn't like play half of the segment before and then half of the next one so yeah we should do precise true okay uh all right um so yeah what we just need to add it I guess to whenever we return this file but uh Jesus okay [Music] um so there will be the file read so this is a [Music] stream so we can just do file if so if it yeah if it ends if it ends with the suff suffix m3u8 but it's not um but it doesn't start with index so if the file name unequal index m3u8 but it ends with it so this would be our um whatever this whatever they call it they call it the the Manifest I think no the playlist I think they call it a playlist yeah okay [Music] so hey Florian yeah it's a little tricky I mean I I can't really commit unfortunately to precise times when I um when I live stream so I just usually start off after my work and then I hope that people you know join or find the time to join or that I catch them you know because people need to see me that I'm live that's a little tricky all right so yeah let's see um we are setting so we are manually setting the time offset to our uh playlist file so that when we start our player it doesn't try to start from the beginning it actually starts at the end let's see whether that works and uh yeah of course now no I mean is it is that actually doing the thing that we want so here this is our response yeah it's actually adding it there but maybe that breaks it let's see if we just disable it hey let's start again three weeks ago after I does work at allm started writing something weeks ago after I read the rust a lot of people nowadays they hear about Elixir they hear about life View and Fe man this is difficult this is really hard to just get a freaking player to run Jesus minute elix quick 30 elix now it works now I'm just going to wait a couple of second until we have our old segments until they're gone because here every single second is like 2 megab 1.8 megab 30 minute Elixir quick start it is trans much a condensed version of the elix the whe says also 1.8 so like we wouldn't need to store that all in all Ram that's just terrible I read the r example and I also saw the GLE to and I thought that we could copy it like we could use um a lot of people nowadays they hear use bed uh ETS so we don't need to keep it in memory we just uh keep it on the disc and then we could add a volume to our server because volumes are cheap you know just adding some space there some storage and then we could store the segments on the dis and not in the in the memory and then start the El that might be better than keeping it in memory I don't know how Alor does it I got to ask about this because they might over putting everything into ads I mean they must have like gabes of ram all right but another the situation like the stream is already running for a little while and uh yeah it's not starting H well of course I also disabled this thing so let's enable it again and it's not working anymore okay let's do this a bit smarter let's do file uh we split the file add the new lines and then uh [Music] um Jesus what do we do we need to group this or splits split withd and then basically we need to whenever the N so what I wanted to do basically is split the file kind of here and then add our um our thing here but what I can just do is add it at the seventh or so like I can also add it as a second line so discard so like I didn't want to add the the line where the off like when the live stream should start so the offset I didn't want to add it to the top I wanted to add it to the second line because I think I break the convention here of starting with x m3u and then all the other stuff um that's why I'm just going to add it like on the second line and that should maybe work uh so I'm going to split this thing into lines and then I'm going to get the first line and the rest and then I'm going to create a new new line here so this is my offset maybe minus four all right and now I'm going to add all this thing together so I'm going to have my first line I'm going to have my offset and I'm going to have my my rest wait okay and then I'm going to just enum join those things again with a new line so that should give me actually a line oh wait yeah so now if I print this one should have Tred to open the withc go make the yeah um so in the last recording we used uh FFM pack for streaming our file like I just have a video file lying here and I'm streaming it with FFM Pack to my rtmp server so actually we got the the handy little architecture diagram that I did earlier uh so we got our video Source here which is our file currently but it should be OBS or restream uh in the future or we stream iio and yeah the video Source it just sends its data to the rtmp server that we started with boom boox that is part of our application and then we use Boom boox for well we didn't start this with boom boox we started it with membrane and then we use inside our rtmp server whenever a client connects so that's is me streaming we convert the rtmp input into an hls output and that we do with boom box that is very a very basic API that just like converts the well it's not basic the API is basic but what happens underneath actually quite complex um but what it does is yeah it converts the input the rtmp input to the hls output and when it does that actually it creates a bunch of files so it creates an index M38 that it's an hls file and that just has very basic information about the stream uh actually maybe also we need to add it to this file let's see with the offset I'm not sure in which which file we need to add it but so yeah we get the uh this file and then we have this other file which basically keeps track of all the current segments so you can see here that um we are in media sequences like our current sequence is 158 and like for every second we create a new file and you know that is how we like chunk our very large streams into smaller segments and then the player can fetch these individual files one by one and that's how it like pieces together that video in the browser yeah so this is you know this is what happens here so that all the files are created and we serve them using a phoenix controller and our HL uh our player in the HTML is actually requesting the these files from the controller and the controller is just reading it from the disk but the issue that we're having right now is that these maxed segment files they get deleted or overwritten so we only keep like 10 or so uh at a time and then um and then you know they get overwritten and they're gone so when a player joins later into the stream it tries to start from the beginning with segment one um but you know one is not available anymore but I'm also confused because uh yeah because also I don't see any requests for the first segment you know I'm I'm a little confused about this whole thing uh could serve those files with plug static uh well they're not static right they're not static files they're pretty Dynamic um yeah maybe you could you could move them to a fold I don't know how plug static works yeah uh the 500 was because of the stream thing here I'm I'm I made a mistake there somewhere um in the spit no function Clause matching the enum split well it shouldn't be enum split it should be string split it's a good idea as well cheers cheers and then the enum join is it no it's enom join yeah okay it's a good idea as well it's a good idea let's restart our thing hello there so now our live stream works as we can see and I'm releasing something and we are fetching segment 012 will help the adoption of but now yeah if I wait for like 10 seconds or 15 seconds then our first segments will be gone 30ir but yeah I'm I'm still confused because what I would expect like what I said earlier right like if a stream starts and then it tries to get the first segment I mean it gets a manifest it gets the uh the index and then our manifest it kind of looks like this that is something Elixir needs as well and in here now I added a line to tell the player that it should starts like 4 seconds before the end and theyed and they want to get started and somehow it's not yeah like now Al our player stopped very very good yeah and now it it it can't connect anymore but it's so weird because it's actually requesting the segments like the latest segments it's downloading it but it's just not playing yeah I'm going to I'm going to reach out to the membrane folks to ask about this because this I don't know this this is this annoying like why can't we just start the thing I mean this didn't work here obviously but our response here is yeah like now our response includes the offset here but it's just not respected I don't know I mean do we need to add it here to the index we can also do this um added to the index but yeah still not starting all right I'm going to uh I'm going to do it the dumb way so to say I'm going to store these segments in uh deaths in the disk based etss because then I don't have to load it into into memory and then I don't know I hope that this will actually fetch the segments but also there um I don't know right because like I don't see any requests here for the files that like the first segments because I would expect actually that well the play the player joins and then it tries to load the first segment and it fails to do so so then you know it like I would see like we need to get a 44 here but we don't so also storing the segments in in in in memory like we don't serve them you know so I don't know like from the outside everything's working fine but the player is just idling and not not starting and also Cloe wasn't really useful here [Music] um yeah also one thing I see here the uh the play list type it could be event which indicates that is a live stream event and then we can set the time offset and uh that might let's try that maybe maybe that works it's just I would like to add these things with and what is the discon discon yeah let's let's let's try that um so I have the offset I have the event type let's try to add this thing here okay let's see yeah so we added this one now like the time offset minus 10 and the playlist type event but still maybe it shouldn't be minus 10 it should be like minus one okay so yeah now it's it's like whenever we send back our playlist info here we add the start time offset minus one and the playlist type event but still that didn't make a difference Target duration three again it would be nice if we could just Define these things when we set up our hls stream I would like to see some more options there yeah I don't know let's have a look at the Alor vitte thing again because maybe they're setting something up like uh I mean they must handle the situation about certain topics High cont on that you think might be interesting video player I will happily add it all right that's it I hope you enjoy this um so when they create their player they a video type A View type of video stream type on demand which we don't have and the Live Edge tolerance is [Music] two course origin true that's all we did okay and then we have a play video function that takes a play ID or all kinds of stuff no there's random audio from the video yeah I'm playing audio from the video you should be able to listen to that oh do you wait do you hear audio here when it plays maybe the video is not playing hang on because I don't have my headphones on I I didn't I have announcement to make again I started my live stream it's working community and will help the adoption of Elixir let's see until we hit like 10 15 segments it is a free 30in also sorry that you need to listen to the same video over and over again very much a condensed version of The Elixir Ducks basically and I started writing this like three weeks ago after I read the RAS by example book and I also saw The Gleam language tool and I so now we hit segment like 14 that means we don't have the first segs anymore if I refresh now no I I don't hear any audio it's just nothing playing but it is don't loading the segment so why nah I mean let's try we also do the seek to Live Edge thing maybe that was the issue no there was audio at some point okay let I'm going to keep my headphones on maybe I I will see that thing again yeah I'm just going to try to let it run but I mean it should have started by now already yeah yeah and I don't think that this actually has any any impact [Music] again uh Alor TV let's see maybe they they figured it out um I mean they have like a play a start time [Music] function oh here what's the function called again play video okay let's see for it's used nowhere funny start time current time so they say if live then they use the LL live DVR option what's that LL live DVR LL live similar to low latency live this mode enables viewers to experience live content with minimal delay while enjoying the benefits of DVR features and the DVR features [Music] are uh uh devia digital video recording combines the features of both live and video on demand viewers can join a live stream and Sim ously pose rewind and fast forward offering more flexibility in watching Live Events I mean that's what we don't want we don't don't want to allow seeking we just want to use live yeah clipping changing source source types it's just weird I mean like stream our our how you say uh player didn't have an issue and I don't know I didn't have an issue playing the first segment so I don't think it's a problem with the type of SE of video we send back here like the m4s uh type yeah I know Cloe was not useful supported codex providers h yeah I mean I I also didn't really see stuff here in alore Chad that's it just this is the the hook so when it mounts it creates the player so that's interesting I don't and then it has play video and that apparently sets the The Source player Source options URL that's how they do it yeah I don't know hls TS file not playing hls the video loads on browser but never starts playing I'm using hls stream my playlist with the browser and I use FM pack to create the TS file okay is that maybe our codec no me top you know you just want to have a high Lev cont Eno this.c everywhere I will happily add it all right that's it I hope you enjoy this um share run.com everywhere where's the sound coming from I hope you think this is a good idea as well cheers what you heard that right I I even closed the browser I don't know where it came from it just like kind of after a while it just decided to play but I didn't even see the the thing and then I have a second I have a second BR that's that's Chrome my God what is happening [Music] I mean okay we can also have a look at how they set up their pipeline like um I'm just going to search for hls Video library the p [Music] line okay so they have like an ad help [Music] here they then I mean they use membrane right somewhere here they got the hls pipeline all right and they add some other stuff like independent segments that's what we also add right index independent segments version and they also use version [Music] seven yeah I think twitch is better on that yeah thanks for for doing that okay so here they do some they work on the Manifest a little bit and they do add disc continuity sequence I think they just add their own like they create their own uh manifest yeah let's see what we did here discon nity sequence zero xmap U yeah part zero so they also don't use like an offset or something and they do a lot lot of conversion here Jesus it's much much more difficult than I expected supports partial segments here they do like a stream in bandwidth frame rate oh they really build it themselves yeah this all the stuff that we build that um boom box builds for us and here they have like a yeah I don't know man I don't know what the issu is kind of getting tired of this um let's just try maybe some other people had some issues here start okay so they apparently also we can have a call back here and say well once the Manifest is passed then we can start at a certain point so that would help us uh that would help us to to find the last second yeah yeah I'm still all right I I still like we still have some leads here I haven't given up yet I haven't given up yet let's see yeah control of course that worked all right so this person uses hls if you tried the auto play [Music] attribute where's auto play here I mean yeah but if we auto play then it should just work right right cheers cheers that's weird also give me topic ideas if you want to learn about certain topics that you know you just want to have a high level context thing on that like there there's some what's playing now okay let's just uh undo our changes here to the file I I don't think that's helping and uh okay let's just let's just make sure that it works again so we and I started writing this hello there okay I have an announcement to make and I'm releasing something that I hope will help the Elixir this works will help if I refresh doesn't work okay yeah good point uh the boom boox Life Book example let's try that [Music] one uh where was it B box example here so I can just copy this one go to live book start a new one copy [Music] paste uh okay um can I that's not what I want I want to open it as um export see import how can I import something open okay I'm just going to copy this into my file here it's life book right yeah yeah live MD That Should Be Live MD live MD all right and I'm going to open it uh development twitch clone boom Box open all right that looks better so now we can set up and uh yeah we just need to we need to find a file that we can play here yeah I think I also need to download this thing because a lot of the stuff that it wants it's in this file in the so I I think I just need to clone this and started from that folder okay let's try this one again open development boom box this one okay now once again get install xlaa and everything and then I have yeah some example things here I mean while this is loading we can continue our uh our Rao here let's see okay so we ready uh the cell below downloads assets to be used in the examples all right and and it runs an HTTP server at 1 2 3 4 that serves static HML files that sounds good evaluate okay now um yeah I mean the problem here is that it's going to evaluate all of these but I especially want this one the micro twitch clone evaluate address use oh yeah for my yeah because I'm running my own on 50001 that's of course right boom okay let's do this one again okay now I connect my streamer streamer connects with app [Music] streamer okay let's go to the website ah peachy yeah so it's playing a video but now if I refresh continues and it does not continue ha we found the issue look at that it wasn't us and here's the same issue it it uh when it doesn't start at the beginning yeah now you can see it doesn't work it doesn't work it's not our fault ah man yeah you can see like I'm playing it doesn't work um and well it might also be that the [Music] streamer yeah let let me do the connect streamer again refresh the page What's Happening Here Jesus ah different stream thing okay so yeah it's running uh it's downloading the segments I refresh it runs I think the issue he is rather the streamer no it stopped man okay let's try this one more time I'm going to connect the streamer go to the website and it's already not starting okay I press pre now it's running and you can see now we live streaming like we have a 11 seconds 8 second three rodents okay whatever let's see how long the the whole video is but it it seems to be long enough so if I actually just restart after 5 Seconds seconds it it stopped working yeah okay I think it's a 33 seconds video okay so the total is 33 if we restart now yeah it will go 22 and it actually doesn't show anything however it is uh it is downloading the segments uh okay well in this situation it can only download the first 10 seconds so let's try this one more time I'm going to connect the streamer show this thing [Music] play okay already the auto play in the beginning didn't work and to reload okay now it's playing I'm going to wait okay until we caught up so now we at like 5 seconds I'm going to refresh okay it recovered I'm going to refresh recovered hard refresh nope so yeah I mean if I do a refresh I'm not deleting the cache so I guess it can find them the segments in the cach or so but again it's just weird with the Manifest and then it it seems to be playing but it doesn't have video at least it has audio Yeah but it has no video okay let's try this one more time with uh with audio so we're going to hit play refresh refresh hot refresh oh it worked hard refresh it worked man this is kind of it's it's hard to really find exactly what the issue is here but yeah no that's the issue no we have sound we have no video hard refresh sound no video play h n it's not quite yeah the example doesn't quite work um I would expect a I would expect a more resilient playback because yeah we generate all these uh the segments and okay if some of yeah it's just like I want to I'm live right I'm the thing is playing live so when I refreshed the page actually I also don't want to go to the beginning I want to go to the end because it's it's live right um so yeah interesting clear B book oh I didn't know that you could actually cluster these things because I I that's another thing I learned now about lifebook because yeah I don't want to evaluate I don't want to evaluate this cell uh yeah okay they do evaluate on demand not automatically that's why they are not um played I didn't know you could do that that's interesting how do they do that life book interesting Branch parent index that's how they do it I didn't know you could uh configure live Book Sales in such a way that they're not automatically evaluated when you evaluate like the third sale and then it evaluates the first and second as well interesting you can Branch cool I learned something good all right uh yeah I I I think we will just call it a day um today for this unfortunately we could not fix that issue that blocked us yesterday already I will try to I don't know reach out to membrane Alor uh maybe they can help me with that but yeah also the example doesn't work 100% I mean it plays the thing but if you don't join in the first 5 seconds then actually we can we can try that one more time so if I join after the the stream already started so I'm going to start it now I'm going to count like 1 2 3 4 5 6 7 8 9 10 seconds and now I'm going to join okay it started from the beginning although it should be a live stream but if I hard refresh still works it it is much more resilient than our implementation so I don't know if I play now yeah now again it has the same issue it can't find the initial segments but it plays the it plays the audio this is so weird yeah okay but that's the issue so yeah uh it's just not 100% resilient and and that's our issue here like when we start our player later on H you know what we let's just one last try with our old which just this same player that they're using so we don't use VD stack I'm not sure maybe it's a vit stack issue so we are just going to just going to use the the boom box here that's the boom box idea okay uh uh Source value this would be HTP 4000 stream index m3u8 okay and I'm just gonna I'm just going to wrap the whole thing in another div uh and I'm going to give it a phoenix update ignore just just to make sure that we're not rendering anything even even the scripts you know okay interesting ah okay so address already in use it's going to close this and try to start our server oh it's already news our lifebook isn't started but that's okay we can just change our report to 50002 okay and now we can start our F ofm pack okay now have veg is running we go to Local Host all right to make and I'm releasing something that I hope will help the Elixir Community let's try this now if I refresh yeah no hard refresh and I'm going to do one one other thing so maybe I can hang on maybe I can open just that HTML thing uh development twitch no boom box so I'm opening the HL HTML file and I'm going to do the [Music] source play What's Happening course missing uh damn it uh Missing allow origin yeah that's great course issue seven so I do this h no okay yeah anyway I I thought maybe I could always course yeah it damn course I mean it's even my freaking Local Host just ignore freaking Local Host from course and in any browser just why not Local Host just allow it it would be would make things so much easier righty yeah okay all right folks well unfortunately we did not get through that issue neither with vdda not with the official hls player um I could kind of replicate that bug also with the Life Book Life Book example and um yeah I don't know I'm I'm gonna that's just it's it's very frustrating because one of these things where we just we're stuck we don't know what it is um but we can't continue without it unfortunately so let me try to reach out to some people I think I will be back on Friday like afternoon Amsterdam afternoon so like around the time that we started today and uh hopefully by then I have an answer to why this isn't working because yeah if not we're blocked on this I don't feel like spending another session on trying to debug it you know and it's just frustrating that like the player just doesn't work right it gets the the correct playlist but for some whatever reason it just doesn't doesn't start playing although sometimes it's playing audio but not video okay whatever what gives yeah so uh I don't know I will I will I will you know let's let's keep Friday afternoon a let's yeah Friday afternoon hopefully have an answer by then but you know if not we're going to start with a new project we're going to start with a new project I already have another idea I think what we could do instead like what I actually would like to do as the next step uh which is we can use the Elixir web RTC uh library to create a zoom clone so we got from a twitch clone to a zoom clone we still stay in the uh media processing area using membrane um but we will focus on web RC and this one is allowing us to yeah set up like a zoom thing right so we can actually all jump on a website you can you know I just want to have like a website where you can go to and then you can send me messages and I immediately see them you know instead of having the 30 minute uh thing so you're doing a stream with ROTC are we doing a stream with ROTC because I'm doing a stream with ROTC are you also doing a stream with to see Shameless plug okay let me open it my stream oh you do actually do a stream ha somebody stole that idea well okay y Lim's gonna be there that's going to be amazing Chris mcord even Philipe as well man you are you're in a in a lineup here it's like y Chris not sure who this guy is oh mat okay of course he's a c-rate of Elixir membrane uh awesome J kco are the the guy from uh he's from the LSP from elixia LS yonatan clco I don't sure your name and then there's Philipe cool all right how can I join us uh sign up updates yes please here take take my email for everybody to see I also want to have the useful multimedia Linkin events awesome I'm in uh so what's that October 21st until 25th yeah so this so we can actually start our project and then we can say that you stole our project that isn't that a great idea what are you doing Philip you are doing a realtime system using Elixir yeah May okay maybe I shouldn't do the webc then because you know I don't want to I don't want to take away your your fire if you're building it super base oh know you do the real time system that's not Rapa C is anybody doing Rapa C so Chris will show us how easy it is to build a real time twitch clone I want to see that Chris I already know Buck you're going to run into maybe I can help you with it yeah but he's using repc so maybe that's his you know he's not using an hls stream H why is that okay but I'm certainly going to go to matti's talk and I'm going to ask him about this bug and I ask like hey can you just do this and then see what happens yeah yeah and then uh us is doing is doing a continuation of the latest keynote cool all right I'm excited for this you not time um he's going to dive into Elixir Mel libraries awesome the whole week Jesus I got to be at my computer central eastern standard what is that to Amsterdam 7 p.m. 700 p.m. in Amsterdam okay well why nobody knows why ah the you know that's one of these issues actually we should all have like a little I don't know extension of the browser we you just see that and then it's like show me my local time that would be nice no because nobody knows first of all what s stands for C and then how does it relate to your local time nobody knows cool awesome all right I'm going to be there I'm going to be there see anybody chipping in with comments no people liking things but they're not joining I don't believe there's 440 views on here if there 440 people on Twitch on Twitter I'll send me a message right now please I want to see this chat like you know blowing up with 440 messages freaking Twitter you should all read this book uh character limit H well book yeah hey Chase okay well you're there you're one out of 440 wow David okay two people already David and Chase actually high chase uh you know if people don't know Chase is the guy behind lock flare or maybe not maybe that's a different ch Chase sorry this is Chase granberry you are Chase story ah okay yeah this person cool changing American Healthcare hi Chase anyway uh Jon is there different Chase ah anyway you know it's a it's a good uh good group to be in as a person who's called Chase uh I wanted to say you should all read this book cleric the limit about Ellen musk and how he acquired Twitter it is a really entertaining and infuriating read and after that you kind of don't want to use Twitter anymore because it's just so so dumb stuff you know a lot of people like if you have money doesn't mean that you're smart it just means that you might have people around you that say yes to everything you say because they think you're the smartest but you're really not that smart yeah anyway that's another story um so yeah now that I have my chat blowing up from people that follow me on Twitter I'm going to call it a day I'm going to end this live stream but I do thank all of you for showing up for helping me through these difficult times uh supporting me mentally and uh giving me your support and love and maybe on Friday we will be able to push through this wall and finally figure out why the heck our player is not playing as we want to because uh Anna Katarina thank you anak Katarina you're from LinkedIn you're one from LinkedIn no there's a second one now that's already you an no there was two and I C that's a beautiful name and I'm only saying that because you're my girlfriend not because I'm hitting on you anyway thanks Philip uh I will see you all on Friday I will reach out to people annoy everybody until they give me an answer and then we will come back on Friday and finish this because I would love to publish this to the cloud to fly you know into production and then you can all watch me on a really cool website where I'm like you know a video like right now already but then it's a different crappy website built by me and uh you can you can chat with me there that would be cool and I mean the long plan of this project is to add whisper to the whole thing but you know just seeing how difficult it is already to set up the freaking player we might not do that let's see I would love to add whisper but that means we also need to create an audio pipeline but maybe we can do that with boom box to just a second pipeline input output and uh let's check I think they uh also have like an input output thing here output MP4 H and we can even have an output stream and maybe we can run that through whisper and maybe that will give us really cool life life real time transcriptions maybe let's see yeah cool uh I will see you on Friday have a great rest of the day and a good Thursday and thanks for joining in see you soon bye-bye

Video description

Let's code a Twitch Clone in Elixir together using Membrane, Boombox, and LiveView

© 2026 GrayBeam Technology Privacy v0.1.0 · ac93850 · 2026-04-03 22:43 UTC