[HN Gopher] Superstreamer - OSS streaming toolkit from video sou...
       ___________________________________________________________________
        
       Superstreamer - OSS streaming toolkit from video source to player
        
       Author : thunderbong
       Score  : 144 points
       Date   : 2024-11-02 11:09 UTC (4 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | matreyes wrote:
       | Nice!, is this similar to https://membrane.stream ?
        
         | matvp wrote:
         | I didn't know membrane until now. We do some things similarly
         | (like transcode), although I'd like to provide the full chain,
         | from source to playback with real-time video manipulation (such
         | as ad, bumper insertion, filtering, ...) The latter is unique
         | to do that open sourced.
        
       | matvp wrote:
       | Author here, this is a fun surprise to wake up to! I was doubting
       | whether my project was "ready to post on HN" but someone beat me
       | to it.
       | 
       | With Superstreamer, I'd like to create building blocks that
       | simplify video end-to-end. While I initially wrote it as an "all-
       | in-one" toolkit, I'm more leaning towards an open architecture.
       | Like, you could use Stitcher to insert HLS interstitials (like
       | ads, or bumpers) but have your original playlists come from Mux,
       | Cloudflare Stream, etc... The transcode and package
       | infrastructure is there for you to use it if you'd like to stick
       | to a fully self hostable solution.
       | 
       | As for player, it's a neat facade around HLS.js (kudos to the
       | maintainers, their project is great), while initially a streaming
       | library, the facade exposes an interface that makes sense for UI
       | developers.
       | 
       | Happy to answer any questions you have.
        
       | libaznezba wrote:
       | What are differences betweenSuperstreamer and Gstreamer?
        
       | varun_chopra wrote:
       | This is really cool. I built a video streaming service CMS[1]
       | earlier this year and have started building the the infra stack.
       | Your implementation is really great!
       | 
       | [1] https://varunchopra.vc/posts/building-streaming-service/
        
         | fuzzfactor wrote:
         | Outstanding !
         | 
         | Looks like all that would be needed for users to select streams
         | podcast-style from the server(s) the files are stored on.
         | 
         | I would think there should be a direct way to then deliver the
         | stream over something like Superstreamer or VLC.
        
       | zschuessler wrote:
       | I skimmed the Readme, the What is Superstreamer? page, and
       | features list. I still don't understand when I would use this, or
       | when I would recommend it to someone. I'm an engineer somewhat
       | familiar with the space.
       | 
       | You may consider starting with a simple unique value proposition
       | and reworking presentation from there.
       | 
       | Take the first sentence of the Readme as example: "Superstreamer
       | is a self hostable platform that aims to simplify the
       | complexities of video delivery" - and answer questions:
       | 
       | 1. Who is benefiting?
       | 
       | 2. How is this better?
       | 
       | 3. What complexity is being solved?
       | 
       | 4. What's the tangible outcome, or CTA?
       | 
       | 5. What well-known alternative is this related to?
       | 
       | ChatGPT took a stab at it. Not amazing, but something to start
       | with:
       | 
       | "Superstreamer is a self-hosted platform that simplifies video
       | delivery, giving you full control over your content without
       | third-party dependencies. Reduce costs, customize your setup, and
       | deliver high-quality streams with ease. Drop <competitor> today
       | and get started in minutes."
       | 
       | Also simple things like defining an acronym before it's used goes
       | a long way.
       | 
       | Overall presentation, UX, design, code quality, and detail is a
       | homerun IMO. Nice work, I can tell you put a heap of passion into
       | it.
        
         | matvp wrote:
         | Hey, thank you! You're not the first to mention the docs. I'll
         | have a full rewrite of the docs planned shortly where I'll
         | address your (& others) valid points.
        
           | danudey wrote:
           | Full docs rewrite is nice, but for now maybe a two-minute
           | update to the readme to clarify these points for people
           | coming across the project would be beneficial.
        
           | fuzzfactor wrote:
           | I like the looks of this as a local or internet media-
           | streaming server.
           | 
           | I assume you handle a few different media formats already,
           | and can deliver or multicast something like mp4's which
           | theoretically anybody with Windows, Apple, or Linux will be
           | able to play on their various open-source or proprietary
           | media players. Using no additional software on their part
           | that they weren't already using to play their mp4's with.
           | 
           | Which is one of the killer features of VLC besides being an
           | extremely versatile media player itself. VLC can be a little
           | complex to get going however, even though there is lots of
           | documentation it does not concentrate on streaming and there
           | ends up being more solutions to show-stoppers on message
           | boards than in "current" publications. Both are somewhat
           | weighted toward deprecated versions, but OTOH it's good to
           | have so much information building up over the decades.
           | 
           | What I would do is totally benchmark against VLC, focusing
           | only on streaming, ease-of-setup use & maintenance, and
           | especially _documentation_ for anything that can not be made
           | highly discoverable [0]. Make it bone simple to point  &
           | click a few times and have your chosen media playlist be
           | instantly streaming & available from a known IP address on
           | your local server's network, or from there over the internet,
           | including privately through Wireguard would be good. So all
           | you have to do is give the clients the IP address (and port
           | if required) of the stream source, and any private
           | credentials or keys which can easily be communicated over the
           | phone verbally if wanted.
           | 
           | The clients should then be able to tune in at their leisure
           | from any device, privately or publicly, on isolated LAN or
           | wide open internet, with almost any firewalls in between.
           | 
           | I really like the idea of sensible defaults.
           | 
           | OTOH, it can take some doing to get VLC right, over more than
           | one weekend :\
           | 
           | But once you do, here is how it works in Windows, even though
           | VLC was primarily made for Linux, the Windows version sets a
           | good example of an "easy" approach for beginners:
           | 
           | 1. Take a blank SSD or equivalent, install Windows (Server or
           | not) and join the desired network, at least a local LAN or
           | something.
           | 
           | 1a. installing Windows is not exactly one-click but it is
           | basically a unit process that is going to be done anyway. You
           | don't need to be an administrator when you are streaming, or
           | have any further dependencies.
           | 
           | 2. Install VLC. Just double-click on the single standalone
           | EXE file, and it's installed. No dependencies other than one
           | of the various basic Windows versions that millions of other
           | people already have. Especially no need for the PC to ever
           | connect to the internet unless you really want to.
           | 
           | 2a. then comes the hairy part, configuring the hundreds of
           | VLC options so the limited number of formats which support
           | streaming can be focused on. Eventually you get configuration
           | down to where a small script will launch a stream, in the
           | desired format, out the desired port of your server. So
           | _eventually_ you can launch a stream with a single click
           | after powering on, and if you could skip all the confusing
           | configuration, ideally step 2 here would be only-a-couple-
           | clicks-to-streaming-after-installation. After a one-click
           | installation.
           | 
           | 3. Obtain the current numerical IP address of this media
           | server's stream, whether fixed IP or DHCP, along with any DNS
           | equivalent whether dynamic or not. Communicate this target
           | address, port, and any credentials to the client users,
           | privately if desired, even over the phone verbally. After
           | addressing the optional requirement for users when they might
           | need a privacy approach like Wireguard to be present at the
           | client end. Any device possessing a player having the proper
           | codec for that stream should then have no problem playing it.
           | In pretty much real time.
           | 
           | So basically, plop down the laptop that you're going to use
           | as a streaming media server, double-click on the desired
           | playlist (or webcam, etc) , and some kind of worthwhile popup
           | shows the full (but simple) information needed for the
           | clients to connect at that particular time. While the
           | playlist is playing, or maybe have a stream menu available
           | for user-selection Netflix-style. Publicly or privately with
           | virtually the same workflow.
           | 
           | "All you need to do" is "streamline" the whole thing until
           | it's smoother and quicker to get going compared to VLC.
           | 
           | I would estimate you could get it 100x easier, so if you only
           | made it halfway look how impressive it would be :)
           | 
           | I think you're on the right track if you can get it to a
           | matter of minutes, the saner the defaults the more you can
           | just install a single standalone offline binary, then click
           | on a playlist, whether interactive with the ultimate-media-
           | client or not, and your streams will be available in a format
           | that most people can play, and traverse firewalls for those
           | who can access your current server address properly when you
           | intend.
           | 
           | In only minutes after install of a single file onto any of a
           | majority of common everyday devices, when neither the server
           | operator nor their clients have very much tech ability. All
           | the server needs is a valid playlist of some kind, which can
           | be expected to be relatively non-simple to properly craft,
           | but well-tolerated by users of corresponding super-smooth-
           | workflow, optimized single-purpose software.
           | 
           | With all the other optional settings beyond default that you
           | wish to provide, acting as icing on the top of a default cake
           | like that.
           | 
           | Maybe even on Windows someday, but right now I would look
           | forward to testing the Superstreamer on just about any major
           | distro of Linux. When it was simple enough to be installed
           | and launched by following a few documented proven steps that
           | anyone booted to a laptop having your preferred version of
           | Linux could do. In order to quickly install to the laptop and
           | then instantly stream a playlist already residing on that
           | laptop, or stream from its webcam, to other devices in other
           | places the regular way. Over the internet or not.
           | 
           | The simplest thing in the world is local streaming from bare
           | metal, so this should be the easiest to document by "default"
           | or I wouldn't be so sure it wouldn't end up with more-
           | variables-than-necessary to get very basic things going, and
           | VLC already has that.
           | 
           | Right now for me there would be prohibitively more obstacles
           | than VLC, but I admire it highly and understand it's a work
           | in progress :)
           | 
           | [0] Which means accumulation of as many features as you can
           | before considering a release or update, therefore document
           | review and revision can be kept to a minimum too. With VLC
           | the features definitely got ahead of the docs and they may
           | never catch up.
        
       ___________________________________________________________________
       (page generated 2024-11-06 23:02 UTC)