Skip to main content


If you've ever wondered if it's possible to run a broadcast television network on commodity hardware using open source software when you have no idea what you're doing, the answer is absolutely yes.

We're doing it right now! Or, at least, we will be tomorrow when they plug us in tot he head-end.

We're running ffplayout on the server side, building our schedules by hand (new open source scheduler and media asset manager coming Soon ™️) and outputting to SRT and RTMP.

The RTMP stream is consumed by peertube, and then spit back out to our roku channel.

The SRT stream is consumed by a piece of hardware at the cable company (that we paid for, an Impulse 300D Network Decoder)which takes the SRT stream and just shoves it in to their head end.

The Impulse Decoder is the only piece of equipment in all of this that isn't a cheap rented VPS, and whatever it's running is the only time any of these videos touch something that isn't free software.

(and the dang thing doesn't even have a DNS client stack lmao)

Adrian Cochrane reshared this.

The vast majority of our videos are captured on second hand 10+ year old cameras.

There are a few newer cameras in the mix, but they're significantly less common and frankly less useful.

We take the footage from those 10 year old cameras and we catalog it in nextcloud and it syncs to everyone who is involved in production.

Then we edit in kdenlive.

Audio is recorded, as needed, in ardor or audacity, and edited in the same place (or it's recorded on purpose built hardware rescued from the digital landfill and edited in ardor, audacity, or directly in kdenlive.)

Most of our editing is also done on second hand/landfill rescue computers. Most of our programming is edited and rendered at 720p or lower because that makes it cheaper and easier to work with on old hardware.

Everything lives on servers running debian (often configured with yunohost, because I'm lazy and I shouldn't have to maintain my own software.)

The vast majority of our content gets licensed CC-BY-SA so that other people can benefit from what we've done, and are encouraged to give back to the community.

ffplayout builds our SRT stream for the cable company and then, from the same playlist but in a separate process, our RTMP stream for peertube.

Peertube powers our online livestream as seen on our website, and our roku channel. When I finish my DIY cable box project, peertube will also power that.

And so, #NewEllijayTelevision is a full fledged cable network (or, at least, it will be in ~14 hours), web streaming network, and video on demand platform, powered by open source software, running on upcycled hardware, produced by a ragtag group of weirdos in the north GA mountains.

You can watch along, if you want: https://vod.newellijay.tv/w/hPrMTPpUuP8ZLoaqHTkLmd

We're absolutely changing the rules.

And it all works! And most of the time it even works reasonably well! And when it doesn't no one is going to care.

We produce original television programs (like Appalachian Football Central: https://vod.newellijay.tv/w/6hCHfnFYcT8FwBkrpXn9RZ and KENKYUU SENTAI PODCAST RANGERS https://vod.newellijay.tv/w/p/ijx94hSHTLw43DqyDpMBFm?playlistPosition=1 ) and we archive historical materials like Space Patrol ( https://newellijay.tv/shows/space-patrol/ ) and we syndicate national programs like Democracy Now and Captain Isotope ( https://vod.newellijay.tv/w/hs9NryagGYu5Pd12Hd7K2a )

reshared this

And there's so much more than that!

There's our music series: https://newellijay.tv/shows/put-on-a-show/

Our political shows, like The Hastening: https://newellijay.tv/shows/the-hastening/ and Behind the Curtain: https://vod.newellijay.tv/search?search=behind%20the%20curtain&searchTarget=local

Our show about hunting bigfoot: https://vod.newellijay.tv/w/3h6m3uZSkBjrHYVLMA3m1o

We've done cartoons and sitcoms and esports and all kind of things. You can learn more about some of them here: https://newellijay.tv/shows/

Adrian Cochrane reshared this.

(peertube falls over when we get a bunch of boosts so, if you pop in and it's not working, give it a second and try again.)

Starting tomorrow, we'll be available in homes around north/central GA.

Over the next few weeks we'll show up in the lobbies and dining rooms of businesses around town.

On a given day, we expect between 5 and 10 thousand people to see what we're putting out in the world.

We're selling ad packages, if you want to help keep us on the air. Reply for details.

In the meantime, to promote all these things that we're producing, and the stories that we're telling, we're making stuff!

I have a gameboy game that follows the plot of Expedition Sasquatch. I'm making cartridges right now! We'll have them available in a few more weeks.

I'm working on more gameboy games for our other shows. We'll do a Shouting into the Void game. We'll do a Jupiter's Ghost game.

We make toys out of recycled milk jugs, and we're working on new action figures for the characters from several of our programs.

We're also making new cartoons! Better cartoons!

We're making new posters, t-shirts, and zines. We'll probably even do some comics. It'll all start hitting the airwaves between now and the end of time.

When those are ready, I'll talk about them a lot here. We'll be selling them to raise money for the rest of what we're doing. If that sounds like something you'd be to, stick around.

reshared this

Broadcast Testing today went okay! It could have gone better, but we encountered the inevitable issue that projects like this always encounter. (Timing signals!)

I'll explain in more detail in a bit, and talk about why that's funny too, but before that I'll talk about what it means.

Basically, the cable company wants to see us broadcasting stable for 24 hours before they let the network go on the air.

Unfortunately, 24 hours from now is the end of the day on Friday, and they *also* want to monitor the channel for the first 24 hours it's on the air to verify that it's stable.

So we'll actually go live on Monday.

But I have every reason to believe that we'll actually go live on Monday, so that means I've got to get out and start selling.

So clocks, right?

Every time pro's work with amateur gear, they complain about the clocks.

It's the biggest difference between professional gear and amateur gear.

When the videofreex tried to do a TV broadcast in 1970, it was the first problem the TV exec's encountered.

The freex knew how to fix it, but weren't allowed to touch the gear because they were not a member of the right union (and they were barred from joining the union because they didn't use the right kind of equipment.)

So it took three or four years before any television network successfully broadcast any video shot in a home video format.

:oof: the encoder died between clips. There's no good reason for that.

I don't even know how to research this one.

Their broadcast engineer said

"When the content just changed, the transcode on our transcoder stalled. This happened several times. I have to go in and re-submit it. We will need to try and figure out what is causing it. "

which is a phrase that comes with *several* red flags, but...

I mean, even discounting the things he said that I would have preferred him to say differently, and the fact that the decoder can't automatically re-start when the stream fails (which is a huge problem!) I just have no idea how to research this one.

I did run in to a similar issue when I was using remote runners to transcode the live stream from ffplayout in peertube.

So It's not a complete shock.

But I thought ffplayout was just spewing UDP packets, so I can't see why swapping between clips on the back end should make a difference!

Now, I suspect that I could fix this by enabling twopass encoding.

But that's Twice as Expensive on CPU.

And I don't actually know if it would solve the problem.

And I don't know what language to even use to describe the problem.

Adrian Cochrane reshared this.

Regardless, we'll get this sorted like we got the last issue sorted, as soon as I figure out what the issue actually *is*
I kinda want details about the codecs used. Is it doing SIP/SDP negotiation? Do you have packet captures of the stall?
This is my former life as a VoIP network engineer coming out.
If I had to guess, throwing a heavy-handed re-encode between your source and their receiver will fix the issue, but I've seen a decent number of cases where for whatever reason just switching between streams... doesn't always work. (I can speculate about codec-related reasons, but I've never dug into them, just found a reader that won't explode and hooked it up to re-encode and called it a day.)

Alright, I got a little more info out of the cable company, but not much.

And they've gone home for the evening, so I will not be able to continue troubleshooting until tomorrow.

But I was able to identify an error message in the ffmpeg debug logs that seems to correspond with the timing of their issue, and I was able to make that error message go away.

I was never able to reproduce the issue, which makes troubleshooting exceptionally difficult.

Adrian Cochrane reshared this.

what's the return window on another 300D I wonder...lol

Alright, my changes resulted in "fewer but not no" errors.

So I added a second output buffer stage that ingests our first SRT stream and just remuxes it.

I don't expect this to make a difference, but it might.

... no complaints from their team so far today. Gonna leave it running over the weekend.
(The impulse decoder is my mortal enemy.)

Okay! This is done.

details to follow.

New Ellijay Television is now Live on cable in Gilmer County, Pickens County, and Fannin County on ETC cable Channel 176.

We're also live online at @video and https://newellijay.tv

Our output pipeline is ffplayout out via UDP to an ffmpeg re-encoder out to the broadcast. I don't love the two step encoding, but it was needed for several reasons.

If you're trying to build a cable broadcast network powered by free software in the future, and you're using FFPlayout as your playout software, great!

ffplayout just can't deliver a consistent enough timecode, and I don't know why.

So skip doing SRT output from ffplayout. Have ffplayout spit a very basic mpegts stream out over udp, and then system job that runs an ffmpeg process that pulls your ffplayout output and adds all the stuff that the broadcast group is going to need.

YMMV, you'll need different stuff than we do, but what we need is:

-re for real time encoding on the input side and

-bufsize 3M \
-maxrate:v 6M \
-minrate:v 6M \
-b:v 6M \
-muxrate 8M \
-pcr_period 30 \
-pat_period 0.1 \
-qmax 1024 \
-mpegts_start_pid 32 \
-sc_threshold 1000000000 \
-flags +cgop \
-g 30 \
-f tee \
-f mpegts -c:v mpeg2video -c:a ac3 -mpegts_flags +pat_pmt_at_frames \
-use_fifo 1 -fifo_options 'attempt_recovery=1' [SRT URL and Parameters HERE]

on the output side.

I could explain what all that does, but I'm not going to because my brain is melting.

It took two days to happen upon this particular solution.

I hate it, but it's working so I'm moving on.

This entry was edited (1 week ago)

Adrian Cochrane reshared this.

But this is time for celebration.

I just launched a television network!

New Ellijay Television is live on cable, online, and on Roku.

We're powered by free software! We're creating creative commons media. We're improving public domain media.

We're broadcasting originally produced material and public domain videos. Most of our work is produced on recycled and upcycled equipment.

We're re-defining what it means to do Broadcast Television in the 20s.

The future is here, and it's a bunch of weird nerds in the north GA mountains.

We need your help! https://newellijay.tv/sponsor-us/

I wish I could rest, but now I have even more work to do!

I need to:

- Re-write 100% of the NETV homepage to reflect that we're a cable network, and add a "FAQ" page that says something about how, if you don't have a cable box, you'll need to re-scan to get our channel.

- Make so many bumpers and ads

- Normalize and repair our video library for broadcast.

- make more television.

- make more t-shirts

- make a TV guide zine

Adrian Cochrane reshared this.

congratulations from Ireland!
No problem. Would love to have this in Ireland.
@KenSwe Well, if you decide to be the change you want to see in the world, I wrote a book about it, and I'm adding updates about what we've done for cable.
Ireland has quite strict public broadcasting regulations. We have had community tv channels but most don't last very long and are completely reliant on public (government) funding. Local community radio is popular though and relies on a combination of podcast links and live shows. Any private TV broadcasters in Ireland have to have a large amount of investment prior to broadcast because competition is tough given it's such a small population.

@KenSwe i have heard that is the case through much of Europe as well.

Thankfully, the actual broadcast bit isn't strictly necessary. A web streaming channel, a roku app, or even just streaming radio can serve much of the same purpose without official sanctioning.

Perhaps marginally harder to market, but only barely.

awesome to hear! I tune in every now and then online and I enjoy your broadcasts!
@FrugalGamer We'll be adding a *ton* of new material soon.
congratulations! Too bad I only started reading this now. You'd be surprised how many of the solutions you described are used in large scale TV :)

@filiplachert

I worked in tv and film post production for a bit in between doing infrastructure at tech companies and starting to do this stuff full time.

I've seen some sins in production and broadcast pipelines that made me shudder.

(I should add that just pulling the SRT output from ffplayout in to that same re-encode process also fails, and pulling an rtmp stream out of ffplayout in to the same reencode pipeline also also fails.

The only thing I managed to get working in four days of testing was udp.)

Adrian Cochrane reshared this.

I know I'm talking a lot about it, but I just wrote a blog post about our cable network launch that summarizes a lot of the high points from this thread: https://ajroach42.com/i-launched-a-cable-network/

reshared this

@video alas, this kind of cursed setup (having to rencode things) is common in broadcast, its also why test patterns nowadays should always have a moving component (as it shows video is going through correctly rather than a crashed encoder just repeating the last frame out of the buffer)
@Andrew (Television Executive) I just want to say - this is actively the coolest thing. Free software cable TV is so good. I... am so happy this exists.

@silverwizard it's not just free software. It's open media. It's community media.

I think this is absolutely the future, and I want five dozen more.

@silverwizard you'll have my full support and access to our syndication library.
are there ad packages that are cost-effective enough that people out here on the internet who want to support you might be able to run baffling shorts in the place of ads? Like funny commercials that don't actually sell anything?

@nyquildotorg

Our regular ad packages are $250/month for a 15 second spot or $500/month for a 30 second spot, but if you want to make a funny commercial for us to air, I wouldn't charge for it and if you want to pay us for it, buy a couple of friend sponsorships: https://newellijay.tv/sponsor-us/

About 25 years ago, in grad school, I ran a media lab for foreign language education. As part of that, we had a channel on campus cable on which we broadcast the satellite SCOLA service of foreign language news broadcasts. The service was run by the local cable monopoly and we were relegated to channel 3, which also was the highest power VHF TV channel in the region, assigned a different channel due to what was effectively multi-path interference from the OTA signal bleeding through.
Honestly, this is so cool. Great job by you and everyone involved
I love all this so much. I was a sportscaster/master control operator/field producer/camera man/director/"guy they hung from a cherry picker with a parabolic mic" for a local public access station for years, and I never EVER wanted to quit that... but my job basically vanished out from underneath me and I've been doing tech support instead for 20 years now.

@DrakkenZero We didn't have a local public access station, so I decided to DIY.

If you ever decide you want to moonlight in production, we've always got room for help.

That will probably depend on the future of Cinematic For The People, it's a movie riffing tv show that I started in the 1990s and then resurrected on YouTube, but we've kind of been running on life support for a while now between youtube not believing in the concept of "public domain" anymore and personal life stuff - one of our core members in need of a new kidney and me currently taking care of two elderly 78 year old parents with extensive medical needs.

That said, here's a couple of episodes from the show that show of my editing and production skills, because why not do a little promotion:

One of our regular episodes, I made all the music and did all the editing too - https://www.youtube.com/watch?v=BVRqSzjgMzo

Halloween special with custom opening and graphics - https://www.youtube.com/watch?v=obj5fBp7mV8

An anniversary series where we went back and re-riffed a few movies from our early days on youtube - https://www.youtube.com/watch?v=mUJYZDxuHPY

@DrakkenZero Not to stick my nose where it's not wanted, but maaaaaybe this could get some distribution on a new broadcast channel too? :D
I still have this guy on my desk, right now.
A small, mostly-blue molded-plastic sasquatch being held in an open hand.  He has a little bit of a derpy look on his face and definitely looks more friendly than abominable.
This entry was edited (1 month ago)

What do you want to bet that decoder is just a wrapper around a bunch of open source with a custom compiled Linux kernel tweaked for the hardware?

"Sencore acknowledges the use of third-party open source software and licenses in some
Sencore products. This freely available source code can be obtained by contacting Sencore Inc."

@johntimaeus It absolutely is a bunch of open source software.

The reason it sucks to use is because they're stuck on an old version of ffmpeg (if I understood what I read in their manual correctly.)