4 ms·
Video Streaming with RethinkDB Changefeeds
- iso8859-1 12y agohow many FPS and how much CPU usage?
- dmarg 12y agoWould definitely like to know this as well. Also, are there any dropped frames over a certain amount of time? Like 5 frames dropped every ten minutes.
- maxmcd 12y agoThe ffmpeg output in the gif shows 7.6 fps
- deleted 12y ago[deleted]
- atnnn 12y agoI told ffmpeg to use `-r 25` but the console output says `fps=7.6`. I just put it together in a few hours to see if it was possible. Given the unexpected interest in it, I'll put some more work to see where we can take it.
- fsaintjacques 12y agoHah, Étienne, lord of hacks :)
- StavrosK 12y agoI read the changefeeds post, but I don't think I understood exactly what they're for. Would clients be talking directly to the database, or would a persistent app worker block on database updates and then send this to the client?
- atnnn 12y agoAn app usually sit between the database and the user, isolating them from each other. This demo does not isolate the database, it is just a proof of concept.
- StavrosK 12y agoSorry, I was asking about the way the changefeed feature is meant to be used, not about this demo specifically.
- atnnn 12y agoChangefeeds are meant to be used by an app that isolates the user from the database.
- StavrosK 12y agoThank you.
- habitue 12y agoChangefeeds are for getting updates to the results of queries on the database. So for example, getting the top 5 users ordered by their score. The app leaves a connection open to the database, and the database pushes changes to the query results whenever they happen. The app can then also have a persistent websocket connection or whatever to the client, so you're able to get push architecture all the way from the data source to the client.
- segphault 12y agoIn a more conventional usage scenario, your application is responsible for picking up updates from the changefeed. You can see an example here of a node.js app using a changefeed to convey updates to the frontend through Socket.io: http://rethinkdb.com/blog/realtime-cluster-monitoring/ http://rethinkdb.com/blog/realtime-cluster-monitoring/ Though, of course, you can also build things other than web apps. Here's a simple IRC bot built with Go that also uses RethinkDB changefeeds: http://rethinkdb.com/blog/go-irc-bot/ http://rethinkdb.com/blog/go-irc-bot/
- StavrosK 12y agoI see, thanks. So you basically get a blocking message queue for free, which is pretty cool.
- icholy 12y agoIs it possible to "backload" changes? "Start the changefeed at timestamp `x`. Once it's caught up to realtime, keep feeding me new ones"
- atnnn 12y agoRethinkDB's `.changes()` command doesn't support this directly. Here is the corresponding github issue: https://github.com/rethinkdb/rethinkdb/issues/3579 https://github.com/rethinkdb/rethinkdb/issues/3579 The code in the demo does this by performing a separate `between` query.
- curiously 12y agoobviously this isn't production quality or scalable but interesting. on the topic of video streaming, could you build something like twitch.tv with this type of tool? or are there other tech stacks at play in order to make video broadcasting possible.
- discardorama 12y agoHow does this compare with, say, using a Redis pub/sub queue? (Aside from the hack value, of using a database like RethinkDB for the task)