Gemini Streaming
I'm testing streaming media in Alhena. Is hashnix the only Gemini radio service? Any others? How about Spartan, Nex or Gopher?
Streaming is an option so the old behavior is still available (media plays from a temp file). When streaming, you can listen to Hashnix or HTTP streams but you lose seek. There are also rare files which don't stream - I think it has to do with the location of the metadata within the file. That's why it's an option. When playing large videos, playback begins immediately which is nice.
Anyway, I'm looking for test streams - particularly on non-HTTP protocols. Unfortunately, the download feature of the AuraGem YouTube proxy doesn't seem to work anymore.
Nov 29 · 13 days ago · 👍 clseibold, bsj38381
22 Comments ↓
/invokes @flipperzero
Having just written a gemini server, I can attest that streaming is pretty much the worst case scenario. Another way to describe it is a denial of service attack: client connects and dribbles data keeping the connection open. In normal operation a gemtext file, or even an image file, is transfered in milliseconds; my server is currently configured to drop lingering connections after 3.5 seconds. And while theoretically my server will support thousands of simultaneous connections/transfers (so far I've seen as many as 3), why assure the worst possible resource utilization?
Commercial streaming services are in the business of user engagement, and want you to be (and stay) connected. We do not need to emulate capitalist tools.
There is really zero need for streaming -- grab the file as fast as you can and do whatever you want with it on your own time!
@stack Luckily in the next version of Alhena, you can:
- Download a media file and open it however you like (nothing new).
- Download media behind the scenes into a tmp file and play it inline (nothing new).
- Stream media inline like Gemini's hashnix radio or say, NPR on HTTP (new feature).
If you're not hosting media on your lightning-fast Gemini server, why worry about it? Either way, the client is either streaming to disk or streaming into a media player.
There are plenty of MP4 videos on Gemini (see the mime-type list on AuraSearch). I'd rather start viewing a large 200 mb file instantly - with the option to cancel - than have to download the whole thing before deciding if it's worth watching.
I don't use Lagrange except for the increasingly rare corner cases but I'm pretty sure it supports streaming audio. Do you consider it a "capitalist tool"?
Your implementation (using a temporary file) is ideal, thank you.
I have nothing against the browser providing a good user experience, such as playing music or videos as soon as possible. I am definitely against dribbling data out of the server as it is pure laziness on the client side. Consider that most desktops, or even phones have more resources than an average shared VPS.
I don't know how Lagrange implemented streaming -- I hope using a temp file, like you did.
However I feel that you're trying to provoke a fight for no reason. We are on the same side, brother. I can't imagine that you disagree that YouTube is doing everything possible to keep you streaming cat videos...
Streaming fits their business model better because they get to show you new ads every time and monitor your behavior.
I'm not trying to provoke a fight. I am a bit defensive having spent days working on a useful (and cool) feature only to have it dismissed. Not the first time. Won't be the last.
Looks to me like Lagrange is streaming though. It appears there's no seek and it does play the Gemini-based Hashnix radio. FWIW.
I had not considered that what I said may offend, as it's pretty much common sense. It is certainly not my intent to offend you.
I can see that if someone is stating that they have content that should be streamed slowly and consume human-time resources for some reason, why not. As I mentioned, if anyone tries that on my server they will be treated as a hostile attacker.
To reiterate, there is no rational reason anyone would want their clients to stream in real-time unless they want to insert ads and track user behavior.
Chances are that a few unwise people will want to emulate corporate practices without realizing that they are not being paid and such behavior is counterprodu,ctive and irrational.
I'm not doing anything that hasn't been done in Gemini already. I'm actually offering more choice.
I totally disagree on your assessment though. People like to set up their own "radio" stations with Icecast, etc. That would be impossible without streaming.
Even the simple example I outlined previously is a huge bandwidth saver. If I start watching a music video and decide it's not my thing, I can stop before downloading 200 mb of data.
I wrote my own Gemini server using the same library I used to write a server handling hundreds of files a second at my old job. I'm not worried in the least about performance or the idea that someone might stream a 75 mb video slowly from my server. The thing is asynchronous and non-blocking. Not a problem.
Ok, we do not agree, and that is fine.
I am certainly not telling anyone what to do or how to do it.
A radio station is something you run in real time shaking the electromagnetic field. When sending IP packets, putting long delays between is just silly. Live doesn't mean much anymore, and the user experience is identical with a download unless it's a talk show anyone can call in via phone, and I have never seen that.
I don't care about the file size or data rate, but about a socket being held for minutes or hours, with associated buffers, file handles, and crypto resources.
It is just inconsiderate.
I'm unclear how it's inconsiderate when it's the server operator that sets up these streaming stations. And if you are serving out gigantic files, you're really not going to know if the client is streaming into a media player or to a file on a slow connection.
OK, I'll take the bait.
I am not aware of a Gemini streaming specification. If I am wrong please correct me
What you call 'streaming' is, I am assuming, is requesting a document over Gemini, then dribblling the response slowly, tying up server resources. So a music album would take maybe 40 minutes to 'stream' instead of grabbing it in a fraction of a second into local storage and playing it locally.
If you are talking about something else, I would love to see where in the Gemini spec such streaming is defined.
If a server operator announces 'I have large media files; please take your time and sit on the socket for as long as you want while I light a cigar with this here hundred dollar bill and pretend I am running a radio station' -- sure.
If you 'stream' without such consent, I call that inconsiderate.
If I have 'giant files' and you are dowloading them over a 9600 baud link, that is likewise inconsiderate.
I do not think it is such a confusing position to take.
I used to have an AuraGem radio that streamed public domain and CC music for all the protocols, but then I moved over from Debian to Fedora, and the music db stuff got messed up, iirc. Sorry about that. I don't expect to fix it anytime soon, since I'm busy with lots of other stuff.
@bluesman Btw, this project is *really* cool, and exactly what I wanted!
My profectus browser never integrated a video player in it, but it could pipe videos into external players, and I quite liked it a lot.
@bluesman Just ignore Stack.
Audio over Gemini has been a thing since Gemini was started. Solderpunk used to DJ on SDF's free radio. When Gemini was started, there were multiple people hosting audio over it, including the Gemini Radio podcast, and someone (I forget their name) who posted all their albums on here, which were quite popular.
It's also the reason why Lagrange has had audio streaming for MANY years now, among other Gemini browsers. Why? Because livestreaming is no different than downloading, just at a slower rate that matches the play speed. Seeking is of course *irrelevant* for livestreaming.
I should remind people that Gemini is a file transfer protocol first and foremost, hence why mimetypes exist in the response header. File transfer protocols allow streaming audio files, and many audio files are designed to allow livestreaming.
Livestreaming does not require a fancy protocol. What the protocol lacks the file formats and an overlaying protocol can fix.
How do people think HLS works? HLS breaks videos into segments, and each segment is downloaded via HTTP. You get each segment with a file called an m3u8 - literally a *playlist* of every segment of the video. This is also what allows for seeking in a video. If each segment has an order/index, and a length, then when you seek, you just look at what segment handles that timestamp in the m3u8 playlist.
People just need to stop being so damn dumb. There's nothing that prevents Gemini from livestreaming, or streaming VODs. HLS exists and is used all over the place in spite of it being "inferior" according to some people. Who cares? It's not actually that inferior.
TCP and TLS also literally ensure that packets get to their destination and are not messed with. Clients that disconnect due to internet connection issues can just re-request the *SEGMENT* that the user is at. All of the so-called "problems" people talk about regarding Gemini not being good for big files are just pure idiotic.
So, seriously people, ENOUGH with it already. You're just showing your ignorance.
P.S. Only a fool would call any of this "capitalist". The moment anybody said that, they should be ignored for life. There's nothing "capitalist" about livestreaming or audio streaming, or free public radios in general. It's actually the *opposite* of capitalist in that it's free music provided for free. Consumption and capitalism are not remotely the same thing. Consumption will always exist even when capitalism doesn't.
The only way to stop consumption is to become an authoritarian, which isn't surprising from such a cynically idiotic worldview that deems all forms of consumption as evil, like some extremist ascetic that abuses their body because they're so narcissistic they think their spirit/soul is "purer" for having done so.
Also, claiming that video is inherently capitalistic, but writing is not, is just as stupid, and conflates the process and artwork with the goal.
P.S.S. If your server has so much trouble uploading multiple 1 MB/s videos because of blocking issues, then one shouldn't be programming any servers, because frankly, one would be an extremely incompetent programmer.
In addition, if one's bandwidth cannot support 1 MB/s 1080p videos, then why the heck would one be hosting videos on one's server? LMAO.
@bluesman It seems like you care a lot about art and the general spirit of Gemini's lack of advertising and simplicity.
Unfortunately, a lot of people on Gemini have turned into fundamentalist fanatics that don't care about the spirit of Gemini, where it came from, or why it was made. It has to do partly with the types of people that were attracted to its early minimalism before games and media were prevalent.
If you want to fullfill Gemini's spirit of an actual library with art that is freely shared and collaborative, you'd need to build a better community, and a better textual format. It's what I had in mind for my Scroll Protocol, but I never finished it.
It's hard to inspire art and collaboration in an environment that hates connecting with other people. The entire goal of art is connection, the I-Thou embodied in a medium, a way to share our stories and thoughts and to respond to them. All art is storytelling, and all storytelling is relationship.
If anybody resonated with the above, then I would definitely continue my work on the Scroll Protocol and its community that embodies that very value. But a community that siloes itself, that likes to yell in the void with no response, is not conducive to that type of culture.
@clseibold Thank you! Your comments are greatly appreciated (again). I love working on Gemini projects but there are times where I question my motivations.
Back to the original post, it sounds like there aren't a lot of working streams on Gemini these days. That's too bad. There are still advantages for regular media but the main use case for Alhena at the moment might be http streams. I've been listening to a great blues station...from France.
Of course, now I have to double-down. I'm starting with small visualizations for the audio player.
Eesh, what?
Not again.
Is the kind of community building you are interested in centered around name calling and trolling people with opinions you don't agree with?
It was so peaceful here for a while.
@clseibold Please chill a bit. We all know who you're calling an idiot/fool, and I don't appreciate it. I'm sure you are eloquent enough to comment without the vitriol.
@admin @skyjake Respectfully, it's funny to me that you protect some people so much from others' vitriol, but you do not even remotely care about *their* vitriol. Only because it is masked with fake polite language. While I'm willing to give you the benefit of the doubt, as you are generally being more lenient than some who might have been more forceful, I am compelled to speak what has instantly aroused in my mind.
See, I value truth, so I don't weigh all things as equal, as if spreading dangerous ideologies or misrepresenting people is the same as telling someone when they are being stupid.
They aren't the same, and your kind is what gives people the illusion that Tylenol causing Autism, that LGBTQ+ people destroying society, and that immigrants should be being deported are all just as valid worldviews as suggesting all of the above are really the evils of our current day. Neutrality without weight is dangerous for a reason. And in case people find this mind-blowing, it is not: in the days of segregation there were people who said the same thing, and there were people like you who said what you now say to me:
I must make two honest confessions to you, my Christian and Jewish brothers. First, I must confess that over the past few years I have been gravely disappointed with the white moderate. I have almost reached the regrettable conclusion that the Negro’s great stumbling block in his stride toward freedom is not the White Citizen’s Counciler or the Ku Klux Klanner, but the white moderate, WHO IS MORE DEVOTED TO "ORDER" THAN TO JUSTICE; WHO PREFERS A NEGATIVE PEACE WHICH IS THE ABSENSE OF TENSION TO A POSITIVE PEACE WHICH IS THE PRESENCE OF JUSTICE; WHO CONSTANTLY SAYS: "I AGREE WITH YOU IN THE GOAL YOU SEEK, BUT I CANNOT AGREE WITH YOUR METHODS OF DIRECT ACTION"; who paternalistically believes he can set the timetable for another man’s freedom; who lives by a mythical concept of time and who constantly advises the Negro to wait for a “more convenient season.” Shallow understanding from people of good will is more frustrating than absolute misunderstanding from people of ill will. Lukewarm acceptance is much more bewildering than outright rejection.
- Martin Luther King Jr., Letter From Birmingham Jail
Europeans would do well to remember the words of some of our greatest Prophets, rather than ignore them just because they are American, especially in a time when Europe is becoming more authoritarian by the minue because it has not learned from its past.
It is very clear to me that you impose greater restrictions on those with the most need and reason to convey their hurt through strong words. You care so much about order and neutrality that you do not give credence to context. It is only through explicitness that you punish, but implicit vitriol and intimidation tactics are not met with the same force.
I wish I could say this was new, but it is not. Many LGBTQ+ peoples deal with adults that use your approach of negative peace consistently in high school. Intimidation and implicit vitriol is okay, but reacting to it explicitly is not. And yet people wonder why us gay people feel so silenced, have higher suicide rates, learn a sense of self-hatred, and often do not form relationships until very late in life.
I am a very loyal person, to a fault. When someone comes after people I respect unduly, I put my full force into defending them, *especially* when conservative vitriol poses as "technical argumentation".
Why am I able to distinguish conservative vitriol when it poses as technical arguments? Because I'm not priviledged enough to be a straight white man, unlike you, so I'm far too aware of idiots like Maggie Gallagher and Jordan Peterson and RFK Jr. who have wrecked havoc on people's ability to gain trustworthy factual information, and have literally gave way to what is modern day eugenics and white supremacy.
Their arguments are the same as the arguments used by Gemini-protocol Conservatives; gatekeeping to protect Gemini from the masses, raising the barrier to entry, so that certain types of people, particularly the non-technical, do not come to Gemini. They are idiots because it is true, and it is not vitriolic to say that.
All of this is to say that your approach, in every context it has been embodied in throughout history, *does not work*. No, neutrality, order without justice, does not work without weighing things in proportion, and you don't get to hide behind neutrality to justify *unproportional* responses to different peoples. Tone should not weigh more heavily than substance.
Might I remind you that I have not forgotten about the misstep of your badges of shame.
I am inclined to suggest that there is a better way, but I cannot give it until people learn to LISTEN instead of always snaping back at those who are actually being harmed, not with words, but with intimidation, dog whistles, and misrepresentation. Until then, I will continue to defend those who I feel are being mistreated.
I do hope this was ELOQUENT enough for you. Wouldn't want to overstep saying something too negative. Who knew a few strong words were more important than my actual arguments?
Let me modify my approach by summarizing my same arguments in more "peaceful" terms:
- 1. Gemini is technically capable of streaming. Not only has this already been demonstrated, as it has always been a thing since the start of Gemini, it is also demonstrable through other file-transfer protocols, including HLS over HTTP, which splits videos into segments within a playlist to allow seeking.
- 2. Gemini is perfectly capable of handling big files. TCP ensures packets are always received. TLS ensures packets are not messed with. Connections are generally stable for a lot of those who use the internet, but in cases where they are not, streaming can handle this with segmentation, just like HLS does.
- 3. The attempt to call video streaming capitalist is a conflation between three distinct phenomena in the world: the economic system of capitalism, the human behavior of consumption, and the creative outputs we call artwork. Consumption exists under multiple economic systems, demonstrating its independence from the economic system. In fact, economic systems are defined by their method in handling/organizing consumption, rather than as a determiner of what humans will consume. Creative outputs imply possible consumption of the output, but it is possible for an artwork to remain unconsumed, thus artwork is also distinct from the act of consumption.
- 4. Consumption will always exist outside of capitalism, not only because humans will require consumption for survival, but also because creative outputs will always exist as long as humans drive for creative expression.
- 5. Creative outputs include audio, video, writing, and many other mediums.
- 6. These mediums only cost because of the economic system we are currently in taht places costs on the inputs of creative outputs.
- 7. Under different economic systems, the inputs could have different costs, depending on that system.
- 8. Calling any medium "capitalistic" assigns an inherent economic identity to the artwork, rather than how the artwork is used and produced. This is reductive and philosophically unsound.
The tools used to create an artwork might arise within an economic system, but they are not bound to it, the economic system does not own it, and once the tools already exist, they can be adapted to different systems and within different environments. The medium itself is separate from the tools and the conditions the tools arose.
Similarly, the cost of the output depends on the artist's intention, and the economic system they are under. It is not inherent in any artwork that it must cost. That is a choice put upon the art itself.
- 9. One can create a culture free of commercial imperatives and advertising within any artistic medium, including videos, audio, and streaming, just as has been done with writing. Again, the medium does not have an inherent economic system. The environment does.
- 10. Being an operator of a capsule requires identifying one's technical capabilities, particularly in bandwidth, and adhering to those. Capsules which cannot technically host videos have the *choice* of adhering to that limitation or not.
- 11. People choosing to host videos for which their capsule is capable of hosting does not place undue burden on other capsule operators.
- 12. So not only is Gemini capable of streaming, the burdens of streaming rely solely on those that choose to host streams, and no burden is placed whatsoever on capsules that choose not to host streams. In addition, the choice to host streams only influences others to do so if they so choose. Thus, personal autonomy is to blame for the spread of hosting. Finally, hosting streams does not make Gemini more capitalistic, and neither does it harm Gemini, as only those who wish to engage with streaming will do so.
@clseibold Seeing yourself as a righteous defender of truth and justice is commendable, but this is a humble bulletin board for mostly casual conversations. I remind you, again, that not following my Code of Conduct does have consequences.
@skyjake And I should remind YOU that your disproportionate "consequences" put undue burden on those who are already vulnerable, and the pattern seems to be that you place more expectation on specific groups over others. Which means you have chosen to do so, and thus have given up all benefit of doubt.
People have a right to condemn your actions when you embrace them so fully, without humbleness to criticism, and without regard to the experiences and issues of the most vulnerable in your community. It's almost like you've just ignored everything I've said above. I hope you can see why it's so hard for me to take what you've said seriously, because it's not serious.
You've consistently given particular individuals free passes for rule violations merely because they bully through passive-aggresiveness, trolling, intimidation, and what looks like "technical" argumentation.
Framing this space as "humble" and "casual" does not negate the seriousness of the harms caused. Really, your interactions here are a microcosm of how you operate in everyday life, what you tolerate, and what you speak out against. I could care less about the BBS, and yet I remain forceful because what I'm saying applies far beyond this BBS.
It only puts what I've said into greater perspective that you've chosen to take a stronger action against me only *after* I've respectfully critiqued you, rather than before.
You don't fool me, and you don't scare me. Moderation comes with increased scrutiny, and that's the way it should be, because as the saying goes: power corrupts. It is through our bravery in speech that we gain any check on power.
Unfortunately, you seem to have taken the writing that I've put my experiences and soul into, to discuss why your method is so damaging to people, and completely ignored and reduced it to nothing, as if there was nothing to engage, as if people's motivations do not matter. Frankly, it shows you lack heart.
My convictions come from lived experience, not ideology. I grew up in very conservative Iowa. My upbringing in a conservative environment is *why* I cannot and will never take a neutral position, and why I emphasize what I emphasize. I'd be dead if I remained neutral or took on the ideas of my surroundings without question. When you grow up poorer, you tend to learn that some ideologies are solely meant to gatekeep rather than protect.
I do appreciate the sarcasm though. We all need a good laugh.
@clseibold: This will probably fall onto deaf ears, and the lack of profanity add to the hatred you've shown, but consider for a minute:
- I am really far from conservative. I actually voted for Obama, before becoming very disappointed with the Democrat Party, who are no longer even Liberal! I've never supported anyone on the right.
- I have a Trans child _and_ a gay child whom I love and fully support.
- There was absolutely nothing about my engineering efficiency concerns that 'spreads conservative agenda'.
You really should look in the mirror occasionally.
And it's this that lead me to add
I'm no longer involved with the Gemini development, so all the tests and tools that were here are have been removed. Why doesn't matter. I've been told to shut up, sit down, and let the adults in the room talk. You have been warned.
To the bottom of my Gemini site main page. A pox on all your houses.