Learn how to live stream video using the HEVC/H.265 video compression standard with Wowza Streaming Engine™ media server software.
Note: Public support for HEVC/H.265 is available in Wowza Streaming Engine 4.8.0 and later, while preview support is available in earlier versions (4.1.0 - 4.7.8).
High Efficiency Video Coding (HEVC), also called H.265, is a video compression standard developed as a successor to the H.264/MPEG-4 AVC ISO standard. HEVC enables more compression than H.264 with comparable image quality. As a result, HEVC can provide substantially better video quality at lower bitrates. Targeted at next-generation HDTV displays, HEVC supports 8K ultra-high-definition video and resolutions up to 8192 x 4320 pixels.
HEVC/H.265 video compression hasn't been widely adopted by encoding technologies or player vendors. Wowza Streaming Engine 4.1 and later offers support for the HEVC/H.265 standard.
Transcode to H.265
Configure Wowza Streaming Engine to transcode a live video stream to H.265 for MPEG-DASH and HLS playback in VLC media player.
Configure the live application
To configure the default live application to deliver MPEG-DASH and Apple HLS video and to transcode using the H.265 template in Wowza Streaming Engine, do the following:
- In Wowza Streaming Engine Manager, click the Applications tab, and select the live application in the contents panel.
- Under Playback Types, confirm that MPEG-DASH is enabled for MPEG-DASH playback and that Apple HLS is enabled for Apple HLS playback.
- Click Transcoder in the contents panel and, if necessary, click Enable Transcoder.
Note: Wowza Streaming Engine must be properly licensed to enable Transcoder. For details, see Licensing Transcoder.
- When Transcoder is enabled, click Edit on the Setup tab of the Transcoder page.
- From the Fallback Template menu, choose the Transcode H265 (Default) template.
- Deselect Match incoming stream name to template name.
Note: If you leave Match incoming stream name to template name selected, the fallback template isn't always used. When Match incoming stream name to template name is selected, if the name of the template and the name of a stream are the same, the stream uses the corresponding transcoder template, not the fallback template.
- Click Save, and then click Restart Now.
Now, all incoming streams will be processed by the H.265 template.
Configure the H.265 transcoder template
Configure HEVC/H.265 transcoding by editing the H.265 Transcoder template file.
You can also configure the encoding presets and decoding presets in the H.265 Transccoder template via Wowza Streaming Engine Manager. For details, see Configure the Transcoder in Wowza Streaming Engine Manager.
- Navigate to [install-dir]/transcoder/templates and open transcode-h265.xml in a text editor.
- In the <PostProcess> block, set the BufferSize to 5000. This will help keep the audio and video synchronized in the transcoded output renditions, however, it may also increase latency before playback starts. Adjust the buffer size as needed to maintain A/V synchronization while minimizing latency.
- Edit the <Encode> and <Decode> blocks as desired.
The H.265 template includes three encode profiles that you can enable, disable, or edit:
- A 720p high-definition, medium-bandwidth profile at 5,000,000 bits per second (approximately 4.8 Mbps). This encode is enabled by default.
- A 1080p full high-definition, high-bandwidth profile at 8,000,000 bits per second (approximately 7.6 Mbps), disabled by default.
- A 4K ultra-high-definition, high-bandwidth profile at 12,000,000 bits per second (approximately 11.4 Mbps), also disabled by default.
- Save your changes.
Adjust CPU resources
By default, Transcoder is configured to use fewer CPU resources than HEVC encoding may require. To address this discrepancy, adjust the mainconcept-h265.performance_level parameter in the H.265 Transcoder template.
Note: These instructions apply to Wowza Streaming Engine instances that run Transcoder on a standard hardware configuration. If you run Transcoder on GPU-accelerated hardware, see any of the articles listed on the Hardware acceleration page and the documentation for your graphics card for recommendations on managing resources when transcoding using HEVC.
- In transcode-h265.xml, locate the <Parameters> block for the video encode(s) you're using.
- Add the mainconcept-h265.performance_level parameter. The XML looks like this:
<Encode> <Enable>true</Enable> <Name>[name]</Name> ... <Video> ... <Parameter> <Name>mainconcept-h265.performance_level</Name> <Value>1</Value> <Type>Long</Type> </Parameter> </Video> ... </Encode>
Specify a value from 1 (lowest quality, lowest CPU usage) to 30 (highest quality, highest CPU usage). You may have to experiment to find the right value. If you set it higher than your available CPU resources can handle, real-time encoding will lag and eventually stop. When this happens, skip frame messages appear in the Wowza Streaming Engine logs.
- Save your changes.
Add custom properties for playback
After the Transcoder template is configured, you must add custom properties to the application to enable HEVC playback in players.
Note: Access to the Properties tab is limited to administrators with advanced permissions. For more information, see Manage credentials.
- In Wowza Streaming Manager, in the live application detail page, click the Properties tab.
- In the Quick Links bar, click Custom.
- In the Custom properties section, click Edit.
- Click Add Custom Property, specify the following settings in the Add Custom Property dialog box, and then click Add:
Path Name Type Value
httpOriginMode String Set to on. /Root/Application/HTTPStreamer mpegdashCacheControlPlaylist String Set to max-age=1. /Root/Application/HTTPStreamer mpegdashCacheControlMediaChunk String Set to max-age=3600.
- Click Save and then restart the application to apply your changes.
Alternatively, you can add the properties directly to the Application.xml file located at [install-dir]/conf/live/. To do so, open Application.xml in a text editor and add the following to the <HTTPStreamer>/<Properties> container element:
<Property> <Name>httpOriginMode</Name> <Value>on</Value> <Type>String</Type> </Property> <Property> <Name>mpegdashCacheControlPlaylist</Name> <Value>max-age=1</Value> <Type>String</Type> </Property> <Property> <Name>mpegdashCacheControlMediaChunk</Name> <Value>max-age=3600</Value> <Type>String</Type> </Property>
Prepare the VLC player
Configure the VLC media player to play the transcoded 720p (default) rendition of the HEVC stream.
Prepare VLC media player
- Download and install VLC media player. To test Apple HLS playback or MPEG-DASH playback, use the latest version of the Official download of VLC media player.
- On the VLC media player Media menu, click Open Network Stream.
- Enter the URL of the stream that you want to play in the Please enter a network URL field and then click Play. The stream URLs for the default 720p encoding profile should have the following formats:
Where [wowza-ip-address] is the IP address of your Wowza Streaming Engine server instance and [stream-name] is the name of the stream published to the live application.
- These instructions play only the default 720p encode of the HEVC stream. If you changed the encode or decode properties in the H.265 transcoder template to enable a different encode, adjust the [stream-name]_[profile-name] value in your stream URL to match. If you enabled multiple encodes, set up adaptive bitrate Stream Name Groups before continuing.
- By default, VLC media player is configured with a very small caching buffer. This can lead to choppy playback initially but it will eventually smooth out as VLC automatically increases the size of this buffer. You can increase the size of the caching buffer by adjusting the Caching property in the Open Media dialog box.