Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Video Streaming with RethinkDB Changefeeds (github.com/atnnn)
107 points by ndarilek on March 21, 2015 | hide | past | favorite | 17 comments


Hah, Étienne, lord of hacks :)


Is it possible to "backload" changes?

"Start the changefeed at timestamp `x`. Once it's caught up to realtime, keep feeding me new ones"


RethinkDB's `.changes()` command doesn't support this directly. Here is the corresponding github issue: https://github.com/rethinkdb/rethinkdb/issues/3579

The code in the demo does this by performing a separate `between` query.


I 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?


In 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/

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/


I see, thanks. So you basically get a blocking message queue for free, which is pretty cool.


An 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.


Sorry, I was asking about the way the changefeed feature is meant to be used, not about this demo specifically.


Changefeeds 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.


Changefeeds are meant to be used by an app that isolates the user from the database.


Thank you.


How 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)


how many FPS and how much CPU usage?


I 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.


Would 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.


The ffmpeg output in the gif shows 7.6 fps


obviously 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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: