Fixing StreamToMe playback quality issues

This page looks at issues that may cause StreamToMe to pause, stall or change quality abruptly during streaming. It will also talk about the settings you can use to improve or fix these problems. For solutions to other unusual problems, please look at your Troubleshooting known issues guide on the Support page.

Observing CPU and network usage for ServeToMe

Pausing or stalling or sudden changes in video or audio quality in StreamToMe are generally related to a combination of CPU and network balancing issues and other issues that might cause regular stream bitrate changes.

StreamToMe tries to automatically choose the best options for any situation but it is not always possible for StreamToMe to accurately know which option will work best so it can be helpful in some cases to check what resource is constrained and adjust StreamToMe's settings accordingly.

If you're experiencing pausing, stalling or quality changes while streaming, the first recommendation is to look at the network and CPU usage on the server while you're streaming to understand which of these is constraining the connection.

If you're running ServeToMe on a Mac: open the Activity Monitor app (located in the /Applications/Utilities folder). From the tabs at the bottom, you should be able to observe CPU and Network activity (in a small graph). Leave the Activity Monitor open.

If you're running ServeToMe on a Windows PC: right-click on the task bar (the bar that contains the Start menu) and select "Start Task Manager". From the "Performance" and "Networking" tabs you should be able to observe graphs of the CPU usage and network usage.

Start streaming a file from ServeToMe on the computer. CPU and network will be heavily used initially but this is expected behavior. The true test is after approximately 1 minute of streaming: look at the CPU and Network tabs. Both should now be occasional tall spikes of activity (every 10 seconds) but should not show continuous usage. If either CPU or network remain in continuous usage, then you need to look at settings that will reduce usage for one or the other (or possibly both) until CPU and network are able to rest (at least briefly) between each 10 second segment.

Activity Monitor on a Mac showing discrete "chunks" of CPU activity every 10 seconds (green blobs in the graph). This is the expected healthy behavior. An overloaded CPU will maintain a consistent level without breaks.

Task Manager on Windows showing regular peaks and troughs of CPU activity every 10 seconds at "Normal" update rate (the green graphs at the top). This is the expected healthy behavior. An overloaded CPU will maintain a consistent level without breaks.

Activity Monitor on a Mac showing "peaks" of network activity every 10 seconds (the red spikes in the graph area). This is the expected healthy behavior. An overloaded network will never settle to these regular discrete peaks.

Task Manager on Windows showing small peaks of activity every 10 seconds at "Normal" update rate (the small green spikes). This is the expected healthy behavior. An overloaded network will never settle to these regular discrete peaks.

Settings that affect CPU and network usage

The controls in StreamToMe and ServeToMe for controlling these contraints are:

The exact value for each of these settings to get the best quality out of StreamToMe is a little complicated.

ServeToMe "Server settings" section.

In a general sense, lowering the "Video Quality" setting in ServeToMe server window will prevent any StreamToMe players requesting the top stream qualities — lowering both bitrate and CPU usage. However, this popup menu only affects transcoded video (non-transcode or passthrough video is unaffected by this menu).

The "Track Settings" screen in StreamToMe showing both the "WiFi bitrate" and "Transcoding options".

The "WiFi Bitrate" options let you select a single bitrate on WiFi, instead of using a variable bitrate stream (this setting will still apply an upper limit on 3G but will not eliminate the bottom bitrates which are required by Apple when running on 3G). Setting a single bitrate on WiFi will eliminate the glitches that can occur due to bitrate changes while streaming, it increases the chances of pauses or stalling since the player can't change bitrate to reduce CPU or bitrate usage.

Transcoding options affect whether ServeToMe allows "passthrough" streams (streams that use video or audio without conversion) or whether everything must be live-converted for the device. Generally: transcoding is more reliable and has more accurate bitrate control but requires significant CPU power and can slightly reduce quality.

Transcoding and conversion issues

StreamToMe uses Apple's HTTP live streaming protocol for all media streaming. This protocol is limited to H.264 video and either MP3 or AAC audio. Additionally, there are bitrate requirements that this protocol needs to respect.

To allow streaming a much larger range of audio and video files that this, the ServeToMe server performs what is called "transcoding" or "live-conversion" of media that is not judged to be in a format compatible with the protocol.

Transcoding is controlled by the "Transcoding options" in the StreamToMe "Track Settings". The four values are:

  • Transcode all tracks
  • Keep all original tracks if possible — this is the default value, transcoding will only be used if required
  • Keep original audio if possible — video will be transcoded, transcoding will only be used for audio if required
  • Keep original video if possible — audio will be transcoded, transcoding will only be used for video if required

Transcoding will always be used if the original track is deemed not compatible. You can look at the last two rows in the "Transcoding Options" section to determine if the tracks in a file are supported (i.e. can play without transcoding) or must be transcoded.

In most cases, transcoding works well and should be largely transparent unless you're paying close attention to the CPU usage on the ServeToMe computer. However, on slower computers there can be performance problems trying to transcode files, particularly video files where the original file and the requested stream quality are high resolution.

If your computer may be near or below the recommended requirements for ServeToMe then 720p video resolutions may be difficult or impossible for your CPU. In these situations you should make sure the "Video quality" setting in the ServeToMe window is set to 480p or perhaps a lower setting.

Of course, the lowest CPU usage situation is one where no transcoding is required. If your files contain H.264 video and AAC or MP3 audio and you don't require subtitles (which ServeToMe handles by rendering them into the video track), then the original audio and video tracks will be used instead of needing to transcode them.

However, there are some situations where not transcoding can cause problems. Specifically, when not transcoding, ServeToMe cannot control the bitrate accurately (you'll get the bitrate of the native file instead) so if bitrate is a concern, then transcoding will deliver better quality. Finally, in some cases it is possible for a track that ServeToMe thinks will work on the device to actually fail in practice due to limitations of the hardware video decoding in iOS devices. In these cases, you may get a playback error when trying to keep the original tracks.

Stream bitrates

On local WiFi networks, the bitrate will almost never limit your streaming with StreamToMe unless your WiFi reception is very poor or you're playing an extremely high bitrate file on "passthrough" (i.e. without transcoding).

For other situations though, non-local WiFi or 3G/4G connections, bitrate will usually be a consideration. Even when your downloads are fast enough, remember that your streaming may be limited by the upload speed for the computer running ServeToMe (most network connections are "asymmetric" and have much slower uploads than downloads).

When left on the standard "Variable" stream quality, StreamToMe will adjust to the best bitrate it can get on the current connection. It will also switch bitrate if an error is encountered on one stream. The error handling tends to make "Variable" the most reliable.

However, in some cases, StreamToMe may be over-ambitious — trying to use a bitrate that is just a little bit too high bitrate to stream in realtime. In these cases, it can be helpful to turn down the bitrate by one notch to ensure that the stream remains within reliable bounds.

Excessive switching

If you notice StreamToMe stalling regularly or switching bitrate frequently, there are two steps you should take:

  1. Set the "Transcoding options" setting in the StreamToMe player's "Track Settings" to "Transcode all tracks"
  2. Set the "WiFi Bitrate" setting in the StreamToMe player's "Track Settings" to 1.4Mbps or lower (if you're on WiFi) or 320kbps or lower (if you're on 3G).

Start with the "Transcoding option" first. This will avoid potential negative trade-offs between limiting CPU usage and keeping the bitrate accurately within bounds. If you continue having issues, then start lowering the bitrate.