There are two categories of encoders: File Encoders and Streaming Encoders
File Encoders seek to make a compressed video file that can be delivered from physical media or over a network. A File Encoder uses a uncompressed video file as an input and produces a compressed video file. When a file is processed, File Encoders can analyze the entire input file, frame-by-frame, and use multi-pass techniques to produce an output that is highly optimized. They can use time to apply various pre-processing “tricks” (such as noise reduction, color optimization, deinterlacing, etc.) to ensure the output is as good as possible. These encoders are often less than real time, where it takes longer than 1 hour to process a 1-hour video.
File Encoders are typically included in video authoring/editing tools, such as Final Cut, Vegas, Media Studio, and Premier, and are invoked when you select “Render” or “Save-As”.
A File Encoder is what is used by Hollywood studios to make DVDs and BluRay disks, and by NetFlix and similar providers to create files at various bit rates and resolutions.
Stream Encoders seek to make a compressed video stream that can be delivered live over a network. A Stream Encoder uses a live video input, such as a HDMI or SDI feed. Because a live encoder must produce the compressed video immediately, there is little opportunity for quality improvment. That is, multi-pass encoding techniques are not possible. Live encoders may try to improve quality by conducting deinterlacing and some noise reduction of the input, but generally the quality of the output is more reliant on the quality of the input and the compressing technique (i.e. the quality of the H264 encoder itself and the settings used). Stream Encoders may also record, where the live stream is saved locally. The quality of the recording can be excellent, but would not be as good as those produced by a File Encoder which can perform quality improvment “tricks”. For most use cases, the difference may not be visible espeically when the Stream Encoder can record at different settings than used for live streaming. Unlike a File Encoder, rate control is more important. For a file, during periods of high motion you can maintain quality by increasing the bit rate. But for a streaming encoder that is trying to maintain a constant bit rate, you have to apply backpressure to the encoder and there are many techniques for this. So a Stream Encoder is more complex. To answer the question “Which produces a quality video?”, the answer would have to be a File Encoder. To answer the question “Which produces a better stream?”, the answer is only a Stream Encoder.
A Stream Encoder is what is used by live services such as Sling and similar “Live TV” providers, often at various bit rates. All Discover Video encoders are Stream Encoders.
You will want to use H.264 video compression (A.K.A. MPEG-4 Part 10). Next-generation compression H.265 does not provide much improvement for streaming at the bit rates of interest for most people (at very high data rates and for commerical producers it has real value). While other codecs have their advantages, H.264 is supported on virually all platforms (browsers, mobile devices, set top boxes, Roku receivers, Samsung TV’s, etc.).
Like with anything, you can have poor H.264 and good H.264. What makes it good? Well, it’s a bit technical but things like rate control, motion estimation, and processing requirements. A compressed video of a non-moving image will look pretty much the same from virtually any encoder. But at any given bit rate, and with the “knobs” twisted to the right values, the differences begin to appear. How blocky is the video? How much CPU is needed? Simply put, not all H.264 video encoders are created equally.
Hardware Appliance vs. Software
Back in 1997 we set out to create the world’s first video appliance at a company I founded. It used MPEG-1 and delivered live video over ATM and over Ethernet/IP. It was a great success and was followed by MPEG-2, MPEG-4, Windows Media, and H.264 appliances and it launched a whole new industry. Today there are many video appliances. However, the motivation for hardware-based vs. software-based encoders has changed.
It was almost laughable to expect a cira 1997 x286-based CPU running Windows 95 to be a reliable platform for video streaming. Machines in those days could barely play a video, let alone create one. When 3rd party cards begain to appear the PC could actually do some useful video things. But not for long before the infamous blue-screen-of-death would appear. An appliance, however, is engineered specifcially for video encoding. Using dedicated chipsets, it can be made to be reliable, compact, and purposeful. It does not relay on a general-purpose CPU for encoding, but uses video compression chips and optimized D/A input devices.
We have come a long way since the the first video appliance. Today we have more computing power on our phones than the astronauts had to land on the moon. Encoding video on a univeral computer platform is today perfectly reasonable, and there are many software video encoders for Windows and Apple computers. Software encoders can take advantage of Intel or Nvidia technologies to lower the CPU load and produce video of the same quailty that used to be only the domain of video appliances. Of course, a computer does not come with any video inputs…excpet for maybe a built-in webcam. To bring in video sources, you need a USB device (MISO) or a capture card (Captiva).
All encoders use software. Many of the popular 3rd party encoders use the Windows operating system even though it is not exposed to the user. Hardware-based encoders, however, use dedicated chips (DSPs) to perform the actual video encoding. Using dedicated hardware in a multi-channel encoder allows high channel density and lower per-channel cost. DV StreamEngine, for example, can encode up to 12 simultaneous video inputs and both stream and record the content in HD H.264.
How To Choose
- For occational use (e.g. daily 30-minute broadcast), a desktop software encoder is ideal, provided your computer has the horsepower necessary (think Core i7 class machine).
- Add the cost of your computer (e.g. $1000) to the cost of the software plus the cost of the capture device (USB or PCIe card), and you may find that using a PC as a dedicated encoder is more expensive than an appliance.
- Use an appliance for continuous streaming, as is done for IPTV applications
- Use an appliance to get an “Easy Button”, and when the size and complexity of a PC is simply not warranted
- For 360-degree video, use a dedicated 360-degree camera that has built-in streaming and file encoders