What is it?
A small program written in pure C and GTK toolkit. Video-conferencing tool. For hackers. Small enough to fit into Raspberry Pi computer.
Is TRUNK LINE any different, compared to Skype, Zoom etc.?
Yes. It does not corrupt audio. Let me explain this moment. Modern video conferencing software use audio codecs to minimize network footprint. Such codecs behave very badly on slow connections. They drop some words and introduce artifacts to hide losses. Sometimes such stream gets aired on radio station and all the public will hear artifacts instead of speech. As a sound engineer I can not tolerate this. So how TRUNK LINE helps here? It allows you to run your own server. And it uses no audio codecs at all. It sends raw 16-bit audio packed to ZeroMQ packets over TCP. One can switch to 8-bit mode to save network traffic. And it never drops audio. It collects all audio frames and allows it to be replayed again without losses.
Does it use WebRTC?
No. It is designed to use no WebRTC at all. Thus, it is fast and small.
How to run it?
1. Locate the .zip file below, unpack it
2. Locate file usefull_commands.txt and follow instructions there. You will need Linux machine to run TRUNK LINE. No need to install Linux on your hard drive, you can run Live Linux from USB thumb drive. It was tested on Debian
3. Make yourself familiar with ffmpeg. It is a command-line tool used for video transcoding, video capture and processing. It is used here to capture your web cam along with sound and pipe it to the stdin of TRUNK LINE binary. ffmpeg has a lot of options for you to configure and play with. Yes, it is used in pipeline with trunk. I've told you it is for hackers. You should learn a bit about how each component of pipeline works, to understand the whole thing
4. Make yourself familiar with sox Sound eXchange tool. It is a command-line tool to handle audio files and audio devices. It is used to play sounds coming out of trunk stdout. If you fail with ffmpeg, you can put sox on input of pipeline. Configure it to send raw audio 24000 Hz rate mono to the stdout. And change trunk options accordingly (see below).
5. Try to make video bridges between Linux devices in your house. If you face difficulties, write me a message. I will help you to troubleshot it
Why is image quality scaled down so badly?
Oh, that's because TRUNK LINE uses no video codecs. Try to change ffmpeg resolution to higher, but this will increase network usage. If you have enough patience, you can add video codec support, but you should design it to make separate frames consistent and usable independently. Because this is how trunk auto-throttle works on slow connections. It drops frames.
Can I run TRUNK LINE on Windows?
No. Until someone will port it to windows, you can not do so.
Can this thing work with JACK Audio Connection Kit?
I think, yes. There is a tool called jack-stdio. Howewer, TRUNK LINE is configured to stop stdout audio pipe when there is no incoming audio, so jack-stdio must tolerate such situations and output silence. I have never tried it actually.
Why source code is so minimized?
If you are interested, TRUNK LINE was written to be published at PagedOut magazine (http://pagedout.institute). This magazine requires articles to be 1 page in size. So I have to manually squash source code so it can fit. So TRUNK LINE is an open-source video conferencing tool with smallest source code out there. Code is small, but still readable.
What are the command line options?
TODO. I am lazy to explain it right away. You have to see source code anyway. Stay tuned, I will update this section.
Can I share my computer screen with TRUNK LINE?
Yes, I think, ffmpeg can be instructed to grab your screen instead of web cam. However it is recommended to stream only part of screen or downscale the stream, so view window can fit in peer's screen.
I do not like Push-to-talk operation. Can it route audio in duplex mode?
Yes. Switch other peer to chan B. You...Read more »