Transcoding best practices

Whether you're a streaming novice or an old hand, a solid understanding of how to configure and manage transcoders in Wowza Video™ service can help you achieve an efficient, reliable, and cost-effective workflow.

What's the difference between a live stream and a custom transcoder?

A live stream includes all of the components you need for a streaming broadcast, including a transcoder, a player, an optional hosted webpage, and Wowza CDN (content delivery network) delivery. A custom transcoder is generally used if you intend to deliver your stream to a different CDN or if you need to adjust your transcoder settings. Both live streams and transcoders correspond to a single, linear video broadcast, received from an H.264 encoder by Wowza Video, processed, and delivered to viewers.

The decision of which to use in our API comes down to your streaming requirements.

Live streams are designed for playback from a browser-based webpage. The process of creating a live stream lets you create a Wowza Video hosted webpage with an embedded player for viewing the broadcast. You can customize the look and feel of both the player and the page. The live-stream workflow also generates HTML5 code that you can use to embed the player on a third-party site.

Custom transcoders, in contrast, are intended for delivery to larger-scale destinations, for example, to a CDN edge network. The process of creating a custom transcoder requires you to manually create adaptive bitrate output renditions and stream targets, or playback destinations, for those renditions. Stream targets can include other social media destinations such as YouTube Live.

Custom transcoders also allow you to fine-tune the transcoding process. For example, you can control the buffer size, enable or disable the sort packet buffer, and enable stream smoothing. A handful of advanced properties are available for streams ingested over RTSP or played over HLS.

As you gain experience or if you need to, you can also edit a live stream's transcoder settings, output renditions, and stream targets to refine the process or to deliver a live stream to a destination other than a hosted or third-party webpage.

What's the difference between adaptive bitrate and passthrough streaming?

Adaptive bitrate streaming uses multiple output renditions, which are versions of the stream at different sizes. All of the renditions are available to the player, which can swap between them to optimize the playback experience for the viewer's screen and bandwidth. Wowza Video generates these output renditions by *transcoding *the encoded source video. Adaptive bitrate streaming allows you to reach audiences that will view your broadcast on a wide variety of devices and screens.

With adaptive bitrate streaming, always ingest the highest-possible quality from your source. All output renditions will be generated at lower resolutions from the source, so the source should be of the best quality it can be.

For passthrough streaming, Wowza Video receives an encoded stream from a source and sends it directly to its destination (the hosted page or the stream target). Passthrough streams are not transcoded but they may be repackaged-for example, Wowza Video may receive an H.264 RTMP stream and apply an HLS wrapper around it for delivery. Passthrough streams ingest a single encode and deliver a single output rendition whose video and audio bitrate, H.264 profile, frame rate, aspect ratio, and keyframe interval match those of the ingested source video.

Although passthrough streams have just one output rendition, they can have multiple targets. This makes them useful for such workflows as IP camera feeds or routing streams to specific destinations.

Because you're likely to know where and how a passthrough stream will be viewed, you can encode your source video for those specific conditions. This way, you don't create a stream that's too large and causes small screens and mobile devices to choke, or create a stream that's too small and whose quality will suffer on larger devices and screens.

Here are some other considerations when choosing between adaptive bitrate and passthrough streaming:

  • Adaptive bitrate streams provide a better viewing experience for audiences. When in doubt, choose adaptive bitrate streaming for the best possible viewing experience.
  • After creating a live stream or transcoder, you can't change its type. If you specify adaptive bitrate or passthrough and then change your mind, you'll have to create a new live stream or transcoder of the other type, which isn't a big deal unless you're under deadline pressure.
  • Not all broadcast locations (the location of the Wowza Video server or servers that process your stream) support passthrough streaming. You may have to choose a broadcast location that isn't physically closest to your source. This may add some latency to your delivery and possibly entail greater bandwidth costs.

What are the cost considerations for adaptive bitrate vs. passthrough streaming?

All streams accrue charges for processing time, bandwidth usage, and (if stream sources or stream targets are used) egress. Because adaptive bitrate streams process and generate more bits, they generally accrue more costs. Because it doesn't require transcoding and uses fewer bits, passthrough streaming is generally considered the budget-friendly way to stream. However, costs can vary widely depending on the amount and type of streaming you do, so you can't make any assumptions about the most cost-effective solution for your particular needs.

Adaptive bitrate streaming is available with a live-event subscription or a 24x7 subscription. Passthrough streams require a 24x7 subscription.

24x7 subscriptions charge a flat fee per stream; bandwidth and egress are charged separately, by the gigabyte. The greater the usage volume, the lower the per-gigabyte cost. For details, see Wowza Video 24x7 pricing.

Live-event subscriptions offer a fixed number of processing hours and bandwidth amounts, plus additional charges if you exceed the plan limits. Use our live event usage calculator to estimate costs and choose the best live-event subscription for your needs.

How many output renditions do I need?

For passthrough streams, one.

For adaptive bitrate streams, it depends.

If you create a live stream, Wowza Video creates the adaptive bitrate output renditions automatically based on the aspect ratio and video resolution of the source encode. For example, the service creates seven output renditions for 3840x2160 source video and four renditions for 768x576 source video.

When you create a custom transcoder, you must decide how many output renditions you want and configure them manually.

A good rule of thumb is to create three to five outputs in addition to the source (passthrough) encoding. The greater the resolution of the source video, the more output renditions you'll need. For 4K streaming, you might want six or seven output renditions. You don't want to overdo it. Too many output renditions can tax CPU processing. For each rendition, specify the aspect ratio, bitrate, and profile you want to use.

Follow this process to configure your output renditions:

  1. Start by planning the outputs you need for mobile viewers, based on the devices they use and the bandwidth they have. This will include the lowest quality rendition you will produce. The stream should be playable over constrained (data plan) and unconstrained (WiFi) bandwidth.
  2. Next, consider desktop browser windows, including small, medium, and large in-page sizes. Use standard frame sizes that are all regular or all widescreen; don't mix aspect ratios and don't use custom resolutions.
  3. Determine the renditions you want for full-screen computer display and OTT devices, if any.
  4. Finally, look at the list and consider creating intermediary renditions or eliminating some renditions that are too similar in size. You may also want to eliminate some to save costs or stay within a budget.

Again, more renditions aren't necessarily better. If they're too closely sized, the player may switch too frequently for minor bandwidth fluctuations, causing playback disruption while not significantly improving quality. Conversely, if you don't have enough output renditions, viewers might watch a suboptimal rendition for too long.

Switches should produce meaningful quality improvements without being too frequent. The size difference between bitrate renditions should not exceed a factor of 1.8, and all aspect ratios should be divisible by 8.

How many targets can I assign to an output rendition?

Each output rendition-including the one rendition used by passthrough streams-needs at least one stream target. You can't start a transcoder that doesn't have any stream targets. Multiple targets are okay, even good-the capability to distribute the multiple renditions to multiple targets is the power and flexibility of adaptive bitrate streaming.

However, the more targets assigned to an output rendition, the more data you're sending across networks. Too great a load can slow delivery to all targets.

As a best practice, each output rendition should have no more than 10 targets. Five or fewer is better for the most efficient processing and delivery of your stream.

What ingest method should I use, push or pull?

A source can push encoded video to Wowza Video or Wowza Video can pull encoded video from a source. For the most part, your source encoder or camera will support one or the other, which will determine which source delivery method to use in Wowza Video.

Push connections are managed and controlled by the source. You provide the source with the host server, host port, and other network settings for your Wowza Video transcoder, and when you start the source, it sends the video to Wowza Video for delivery to viewers. Because there are no requests, push connections are better for streaming at scale, have fewer security risks (they support firewalls) and performance issues, and are a generally more universal option. Their drawback is that because push connections are kept open, they may use more bandwidth and be too expensive for lower traffic streams.

With a pull connection, you provide Wowza Video with the URL of the source IP camera or encoder, and then Wowza Video calls to the source for the encoded stream when a viewer fires up a player. It repeats the request to the source for every started player. For large audiences, these repeated requests to the source can overload the server and create a bottleneck between the source and Wowza Video. And because Wowza Video has to be able to call the source at all times, pull connections aren't very secure-you can't use a firewall with them, making pull connections vulnerable to malicious attacks that overwhelm your stream with requests.

How do I start a stream?

To start a live stream, send a PUT request to the /live_streams/{id}/start endpoint.

Info

When you start a transcoder, you begin accruing charges. Make sure you're ready to broadcast your video before you start it.

How do I stop a stream?

To stop a live stream, send a PUT request to the /live_streams/{id}/stop endpoint.

Info

When you start a transcoder, you begin accruing charges. Make sure you're ready to broadcast your video before you start it.

Do I need to delete my live streams or transcoders after my broadcast?

Nope. You can delete them if you'd like, but it doesn't cost anything to keep your live streams and transcoders in Wowza Video, and you might want to use them again-or copy and edit them to use for other streams and events.