There is much software out there which can be used for decoding video streams. But the question is,
how does one go about encoding a stream? Can it be done in software? Can it be done in hardware? How best to go about it?
What resources are required? I asked those questions, and this is what I've put together so far for information.
For offline encoding of video, software can be used. Some thing like the opensource
staxrip github based solution could be used. This is
billed as a "multiformat video encoding application" with x264, x265, and XVID capabilities and looks like it
incorporates some how the usage of the Nvidia encoding libraries, which might include the use of
the Nvidia TX1/TX2 Jetson's for real time use. But... used .NET 4.6.1, so looks to be a Windows solution. It does
reference other opensource tools like VapourSynth which is a
application/plugin/library for video manipulation. It is self-purported to be inspired by
AviSynth which is a video post-production tool.
Another multiplatform tool is HandBrake, which is an
opensource video transcoder. It also handles h.265, h.264 plus other formats.
H.265, also known as the
HEVC (High Efficiency Video Coding) compression standard, has
an opensource, GPL2 licensed, c++ implementation maintained at x265.
From a hardware perspective, in my previous blog entry, I mentioned the Nvidia Jetson TX1/TX2. With the built in GPU
and libraries, I believe it can do real time encoding and network distribution.
From another hardware perspective, my primary intent is to be able to take HDMI and extend it over IP, hence the existence of 'HDMI over IP extenders'.
danman's blog talks
about reverse engineering the transmitter end of a HDMIoverIP extender. The comments in that post have much
useful info as well. With one stand out being
apantac extender with docs.
The gist of
the article indicates that the encoded video stream is multicast. Which means that software or hardware devices on the
network can pick up the stream and present it. VLC is used as one example. Digital Signage -- here we come! The
ip extender concept has info in a Hacker News thread. Here is Lenkeng's site where some of the extenders are referenced. A picture showing the multicast capabilities.
The article also refers to the HDbitT technology. The HDbitT site referred to InfoComm 2016 where AV-over-IP steals the show. Seems to be a show to visit to see what is current for XoverIP. Beyond that,
the only other useful info on HDbitT was an HDMI Version Comparison.
Talking about shows and media, I managed to land on AVNetwork which includes
AVTechnology, SCN (Systems Contractor News), and Digital Signage Magazine. Finally, sources for current information on stuff-over-ip, including boardroom mics over Dante!
And PoE speakers running Dante!
rivendellaudio: radio broadcast automation solution, with facilities fro the acquisition, management, scheduling and playout of audio content.
With digital audio/video streams available on the network, the next obvious step would be to mix and switch. One open source
project I found is voctomix, which is written in Python and uses
GStreamer, and is designed for interactive live mixing of incoming video streams. Github has
timvideos streaming system based upon the concept.
streamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing.
Snowmix is another live video mixer supporting:
overlaying and mixing video, images, texts and graphic elements as well as suporting mixing audio sources. Snowmix offers animation, simple and advanced scripting, clipping and pattern gradient blending.
Given a mixed stream, then there is OpenBroadcaster: professional read IPTV On-Air studio software. Something for DigitalSignage!
While on the subject of video, there is Pitivi for non-linear editing, amongst others.