How it Works

MoarTube, a decentralized video and streaming platform

MoarTube is a video sharing platform consisting of nodes that are created and managed by the community. Each node runs the MoarTube Node software which handles the storage and distribution of its uploaded videos and live streams. Node management and video processing is handled by the MoarTube Client.

Supported operating systems: Windows, Linux, macOS
Dependencies: NodeJS

MoarTube Client will use a system's CPU or GPU to perform its video decoding/encoding tasks and requires a constant connection to the MoarTube Node it's currently communicating with. The client supports GPU acceleration only on Windows through Nvidia and AMD GPUs; Linux and macOS only support CPU decoding/encoding at the moment, although it is very performant, especially when dual-boxing.

Supported operating systems: Windows, Linux, macOS
Dependencies: NodeJS

As for hardware requirements, it's all about your use case, but you knew I was going to say that, right?

To give you something more concrete, I have tested the following scenario with OBS sending an RTMP live stream to a MoarTube Client over LAN for remuxing and forwaring to a MoarTube Node for live viewing:

Digital Ocean VPS with 1 vCPU and 1GB of RAM, $8/month
MoarTube Client dedicated system with Intel i7-8750H, Nvidia RTX 2070, 16Gb RAM, using GPU decoding/encoding via CUDA and NVENC
MoarTube Client dedicated system with Intel i7-8750H, Nvidia RTX 2070, 16Gb RAM, using CPU decoding/encoding via libx264

Input RTMP stream from OBS to MoarTube Client:
Resolution: 1440p
Framerate: 60
Bitrate: 30MB/s

Output HLS stream from MoarTube Client to MoarTube Node:
Output Resolution: 1440p
Output Framerate: 60
Output Bitrate: 10MB/s
Segment Duration: 1 second
Average Segment Size: 1MB

If Cloudflare integration is enabled, the live stream intake will increase the node's CPU workload from an idle 1.5% to about 25%. This is because after the node receives the video data, it'll cache it on the Cloudflare CDN so that subsequent retrieval (by your viewers) will result in a cache hit. From there, budget about 0.5% increase in CPU workload for each user viewing the stream. This is because the retrieval of the live HLS manifest is allowed to bypass the CDN and is served directly from the node since it is updated too frequently for the CDN to cache and propagate it.

If Cloudflare integration is disabled, live stream intake will increase CPU workload from an idle 3% to about 15%. From there, budget about 1% increase in CPU workload for each user viewing the stream as not only are they retrieving the live HLS manifest but the stream data as well.

You can expect a latency of about 5 seconds from the time the stream is sent from OBS to the time it is viewed by your viewers with this segment length.

Let's talk about video on demand (VOD) streaming.

If Cloudflare integration is enabled, all necessary data will be served by the CDN if the cache isn't empty. If the cache is empty, the CPU workload will temporarilly increase as the node will be serving the data to the CDN for caching. As you can see, video on demand streaming is very efficient when Cloudflare integration is enabled and such a node can operate with minimal resources.

If Cloudflare integration is disabled, all data will be served directly from the node. Budget about 1% increase in CPU workload for each concurrent user visiting the node.

Hosting your node in the cloud is convenient, but you pay for that convenience, however those rates that you're seeing are monthly. There's nothing wrong with dialing things up to a high-tier VPS for a few hours (or days) to handle a high traffic event and then dialing it back down to a low-tier VPS (or removing it altogether) when the event is over to save money.

If cloud hosting isn't your thing, hosting at home off of your WiFi is a great way to customize your node's hardware to your liking. Throw in a multi-core CPU, massive nVME hard drives, and lots of cheap RAM and you got yourself a powerful node that can handle just about anything you throw at it. Add Cloudflare into the mix and you can be your own content platform whilst using your node as a footrest. Whether in the cloud or at home, it's a case of paying as you go for convenience versus paying for it all upfront.

These are just dedicated node hosting scenarios; you can also run a node on your personal desktop or laptop.

Why stop at one node? Create as many as you want in different locations for different purposes.

With MoarTube, there are many possibilities. If it has an internet connection and can run NodeJS, it can run a MoarTube Node.

The MoarTube Node software is designed to run on any system that can run NodeJS, and the Raspberry Pi is no exception.

Be sure to enable Cloudflare Integration within your node's settings if you plan on serving live streams or video on demand content to the public. This will help to reduce the load on your Raspberry Pi.

All internal testing was done on a Raspberry Pi Zero 2 W.

With the appropriate port forwarding in your router settings and operating system's firewall rules, your node can be accessed from anywhere in the world from the convenience of your home.

You can also associate a domain name with your home IP address and use that domain name to access your node. This is especially useful if your home IP address changes frequently, or if you just want to make it easier for your viewers to access your node without having to keep track of its IP address.

Yes, you can encode multiple videos and live streams at once. The MoarTube Client is designed to handle multiple video and stream encoding tasks concurrently and MoarTube Node is multi-threaded and can handle concurrent requests. Although the number of tasks that can be handled at once is determined by hardware resources, you'll find that both the client and node are quite efficient in terms of their resource usage.

Unlike other platforms, MoarTube's nodes are managed by the community. You can host your node(s) anywhere such as with cloud providers (AWS, Google Cloud, Microsoft Azure, Digital Ocean, etc...) or even on your home WiFi.

MoarTube doesn't host any nodes itself and therefore doesn't store any videos, but the MoarTube indexer keeps track of all nodes on the platform that have videos marked for indexing, and the MoarTube aliaser provides reverse url lookup. Indexed videos are displayed on the MoarTube front page.

You have the option of sharing a link to your videos publicly on the MoarTube front page. We call this indexing. All indexed videos are tracked by the MoarTube indexer.

Indexing is an opt-in feature and videos uploaded to your node are not indexed by default. Adding videos to the MoarTube indexer is as easy as clicking a button, and removing videos from it is just as easy.

You may index all, some, or none of your videos.

MoarTube is an open and free platform. You can index as many videos as you'd like from as many nodes as you'd like.

Absolutely! All nodes on the MoarTube platform start out as private and only become public if you decide to index any videos.

Basically, you can use MoarTube Node as your own private media server to host videos and streams for pretty much any use you can think of.

The MoarTube aliaser keeps track of all aliased video links on the MoarTube platform. When you share a link to a video on your node, you have the option of using a MoarTube alias to represent that link.

For example, if your video's link is
http://213.66.79.101/watch?v=DQekY0VMcTD

or if you've decided to use a domain name and set your node to use HTTPS
https://myAwesomeMoarTubeNode.com/watch?v=DQekY0VMcTD

an alias may be
https://moartu.be/nodes/my_custom_node_id/videos/DQekY0VMcTD

Aside from your node's login credentials (which are stored on the node), MoarTube is entirely open for all to use.

Your node's default login credentials are as follows:
username: admin
password: admin

MoarTube does not perform any kind of user analytics. The only data that MoarTube collects is what is submitted to it through indexing.

All traffic going in and out of a node can be encrypted via HTTPS. This is configured within the node's settings. All that is needed is a PEM formatted SSL certificate, private key, and any required certificate authority files.

You may use a self-signed SSL certificate.

MoarTube Client is a single-threaded NodeJS Express application that utilizes third-party multi-threaded software, particularly ffmpeg 6.0.

MoarTube Node is a multi-threaded NodeJS Express application and is able to take full advantage of the system it is installed on for its storage and distribution functionalities.

MoarTube Client allows users to take advantage of GPU hardware for accelerated H.264 encoding/decoding for HLS and MP4 formats. WEBM and OGV utilize CPU encoding/decoding.

At this time, GPU acceleration is only supported on Windows; macOS and Linux only take advantage of CPU encoding/decoding at the moment.

Many are under the impression that CPU encoding/decoding is slow; it's surprisingly efficient, especially if you dual-box with the MoarTube Client on a dedicated machine over LAN. Internal testing with a 1440p 60 fps 30MB/s gaming live stream broadcasted from OBS to such a dedicated machine equiped with an Intel i7-8750H CPU was able to efficiently remux to Live HLS in real time to a MoarTube Node running in the cloud behind Cloudflare's CDN, maintaining a latency of about 5 seconds. The remux was configured to downscale the bitrate to 12MB/s but maintain 1440p 60 fps. This was tested over a duration of 5 hours.

Although GPU encoding/decoding is superior, CPU encoding/decoding a live stream is well within the realm of practicality in the context of dual-boxing, even on the same machine as the stream provided that the demand doesn't exceed the CPU's capabilities.

Your node is able to serve videos encoded with adaptive streaming protocols (HLS) and progressive streaming protocols (MP4, WEBM, OGV).

Adaptive streams utilize manifest files while progressive streams are requested and served via byte-range addressing.

When users view a video, their browser will observe the order of format precedence: HLS, MP4, WEBM, OGV

MoarTube Client is able to accept live streams over the RTMP protocol, transcodes them to the Apple HLS format, and sends them to your MoarTube node for storage and distribution so that people can watch them. This all happens in real time.

With the Cloudflare one-click integration feature, you'll have access to unlimited bandwidth and be able to stream to audiences of unlimited size, all from a MoarTube Node running on minimal resources.

You can stream almost anything with MoarTube, such as gaming, music, and even your desktop. You can even stream pre-recorded videos and movies. Software such as OBS will allow you to take advantage of all of these use case scenarios, and more.

You can share videos published to your node on other websites. MoarTube supports the following means of sharing:
<embed>
link
Twitter share
Reddit share
Facebook share

All inquiries (including DMCA takedown requests) about a node and/or its content should be sent to the operator of that node via the video's report feature, or their social media if it is disclosed.

MoarTube does not host any content; all content is stored on nodes that are created by users who deploy and manage them. Node operators determine what to upload to their node(s) and share on the MoarTube front page via indexing. As such, MoarTube is unable to remove content and/or take down the node(s) that said content resides on as we do not have administrative access to said node(s).

All videos have a "report" feature that allows you to directly contact the operator of a particular node. If all efforts to reach a mutual outcome with a node operator prove unsuccessful, or if you have legal precedent, you can contact the node's hosting provider for further assistance. The necessary steps toward that end starts with a WHOIS lookup of the node(s) in question.

MoarTube cannot aid in the takedown of nodes and/or their content as the hosting locations of nodes and their content resides beyond the administrative jurisdiction of the MoarTube platform.