back to top

What Is HDR Photography (And How to Use HDR Correctly!)

A- A+

Subscribe Below to Download the Article Immediately

You can also select your interests for free access to our premium training:

Your privacy is safe. I will never share your information.
Related course: Photography for Beginners

HDR brings out the deepest shadows and the brightest highlights of a scene. This tool is useful for outdoor locations and interior real estate images. But, it can also add a fantasy element to creative photo manipulation. The problem with HDR photography is that it is often overdone.

In this tutorial, we’ll show you how to use HDR to create natural-looking images.

HDR image of Venice canals[Note: ExpertPhotography is supported by readers. Product links on ExpertPhotography are referral links. If you use one of these and buy something, we make a little bit of money. Need more info? See how it all works here.]

What Is HDR Photography?

High Dynamic Range photography is the method of fusing images to create a final photo. The method involves taking many pictures and then stitch them together.

Each image captures the scene at different exposures. When merged, the picture provides an overall correct exposure.

In most cases, this process needs at least three images. The first one is to capture a mid-range exposure shot. Meanwhile, the second meters for the highlights, and third for the shadows.

You can take many images, as long as the number is divisible by 3. These images show as a plus or minus on the Exposure Value Meter. +3 and -3 is a regular choice.

For three images, the values should be 0, +3, and -3. +3.

For seven images, your range should be -3, -2, -1, 0, +1, +2, +3.

Your camera allows you to capture three images in this manner. Other cameras even have a dedicated HDR feature that let you freely adjust settings.

A compelling sunset over a countryside road and fields

HDR vs. Non-HDR

Modern sensors can cope with 12-stops dynamic ranges or more. You should be able to capture the whole 5EV dynamic range, right?

Unfortunately not. At least if you want some good image quality.

Let’s consider a single exposure and say this exposure has value 0 EV. Next, let’s create an HDR version by combining three exposures taken at -2EV, 0EV, and +2 EV.

After editing them with the same settings in Lightroom, let’s compare them in the image below.

A diptych of the same street scene shot at a single exposure 0EV (top) vs -2EV, 0EV and +2EV exposures (bottom)

The two images are very similar. But the HDR image presents a little less contrast. It has more detail in the shadows. Not to mention the colors are more vibrant and saturated.

You could say you need to brighten up the shadows in the single exposure. What if you reduce the contrast and increase saturation? Will you get the same results as the edited shot? Let’s see a 100% crop of the two images:

Two images of a blue car on the street. 100% crop from the single exposure 0EV (top) Vs HDR from -2EV, 0EV and +2EV exposures (bottom).

As you can see, the HDR shot (bottom) is cleaner and more detailed. Lifting the shadows more in the single exposure degrades the image further.

Even with the modest 5EV dynamic range, a single exposure will have terrible image quality. Especially when compared to an image obtained by combining multiple exposures. Here’s a more technical explanation of why this happens.

Why HDR Photography Has a Bad Reputation

HDR was particularly popular among photographers some years ago. Unfortunately, with automated tools, the internet became flooded with bad pictures.

They show surreal, fake and oversaturated HDR pictures.

Bright over processed HDR landscape with a castle in the background.
Classic overcooked HDR landscape.

The problem is that it is easy to over-process HDR photos. There are many presets available in automated HDR software. They produce unappealing images.

In time, those images became synonymous with HDR mode. But HDR is not a style. It’s a technical tool. The goal of HDR mode is to expand the dynamic range of your pictures.

Good HDR photos are subtle and keep the natural look of your images. Furthermore, you don’t need to remove contrast because it’s what keeps things natural. The way you manipulate the picture has little to do with HDR. You can opt for realistic editing, or you can go wild.

A balanced and natural countryside landscape with a castle in the background. HDR photography mistakes.
A more balanced and natural landscape.

When Would You Use HDR Photography?

There are a number of situations where HDR photography can come in handy when used well. Some of these include interior photography, nightscapes and dramatic skies.

Sunrise and sunset make for perfect HDR images.

Most often than not, your golden hour photo looks nothing like what you can see in real life. Depending on how you set your exposure (manual or auto), you can find that:

  • The sky is very bright and the foreground quite dark with little details
  • Your foreground is well exposed, but your sky looks washed out.
  • The sky is perfect, but the foreground is solid black.

As a rule of thumb, a diffused light during overcast days reduces the contrast in the scene.

The cloudy sky acts as a giant softbox by diffusing the harsh sunlight. As a result, the contrast between shadows and highlights reduces.

On a sunny day with a clear sky, the light is hard and direct. It casts deep black shadows while objects in full sunlight are very bright. This high contrast scene has a great dynamic range (DR).

At sunset, the foreground is much darker than the sky. Unfortunately, achieving correct exposure for both is impossible. And that’s where HDR can help.

In the image below, it is clear you can’t capture the whole dynamic range in one single photo. Lightroom highlight warning shows up in the sky. This warning shows areas that are almost pure white. So there are no details there to recover.

And the histogram shows there are almost no middle tones.

But a high dynamic range can solve the problem.

Triptych photo collage showing a cityscape and lightroom screens.

How Do I Make HDR Photos?

Camera Settings for HDR Photography

Some phone and compact cameras have a built-in HDR mode. But they only work if you save the images in jpeg format. That means you have little to no control over the whole process. So it’s always better to do it yourself manually.

Here’s a short checklist for HDR camera settings you need to use:

  • Set your camera to save the photo in RAW format and to manual mode;
  • Use the lowest ISO setting to work for your situation. Increasing the ISO will reduce the DR the sensor can record.
  • Keep the same aperture for all the photos, as this will affect your depth of field;
  • Note the suggested shutter speed for the 0EV exposure;
  • Set the shutter speed to the most underexposed image you need (e.g., 4EV).
  • Change the shutter speed in steps of 1EV (double the shutter speed) after each photo. Continue the sequence until you get the brightest image you need.

Some cameras have automated bracketing functions. These are great if you want to limit yourself to the +/-2EV range in 3 to 5 photos. But it all depends on the settings and the camera.

Use Multiple Exposures to Capture all the Details

You can create high dynamic range photos on a single file. But it is best to rely on multiple exposures.

Also, you do not need to collect the same number of underexposed and overexposed images. It depends on the scene you want to photograph.

For sunsets, it may be better to use more underexposed images. This lets you capture all the details in the bright sky.

Multiple photographs of a cityscape with different exposures. All photos were taken 1EV apart.For my urban sunset, I needed to underexpose 4EV to capture all the details in the highlights. I could have stopped at +2EV for the foreground. To play it safe, I pushed to 3 EV. I took all these photos with 1EV apart.

Pro Tip: Before starting a new sequence, take a photo with your hand in the frame. Doing so will help you separate one group of sequences from another.

You will be combining different images. Thus, you should have as little movement as possible between the frames.

Set up your camera on a tripod. Use a remote shutter to avoid camera shake.

Here is my final result, you can see that it is a combination of the best details:

Natural looking HDR photos of an urban sunset.

Use De-Ghosting to Correct Movement

It is also best to photograph a scene without fast-moving clouds, people, or traffic. A certain degree of movement among the different exposures is OK. You can correct it with a de-ghosting procedure, available in any HDR software.

In the image below, the clouds moved, creating patches in the sky (top image). I then removed this by de-ghosting (bottom).

Two photos of the same cityscape. Comparison between simple HDR fusion (top) and fusion with deghosting (bottom).

HDR Photography Software

Adobe Lightroom and Photoshop

Lightroom and Photoshop have a Photo Merge mode. Doing so allows you to combine different photos into a single HDR image.

You won’t have a lot of options to tweak the HDR. But you can auto-align the images. This feature is useful for handheld sequences. You can also apply auto settings to the final exposure. Furthermore, you can adjust the level for the deghost.

The HDR Merge panel in Lightroom.

Photomatix/Photomatix Pro

Photomatix is the big guy in the HDR world. You can reimport the images from Lightroom automatically.

It has many options and presets. You can choose different methods to create HDR. Some of the tools you can use include detail enhancer, tone mapping, tone, and more.

Photomatix Pro comes with a plugin for Lightroom called “merge 32 bit”. This feature creates a basic 32-bit HDR image you can edit in Lightroom.

Phone Apps For HDR Photography

Many phone cameras have an HDR mode function in their default camera app. But you can also try dedicated apps such as True HDR and Pro HDR X .

Common HDR Issues

Flattening Your Image

An HDR image contains a huge amount of data that can be extracted, and dark areas can be brightened up quite a lot to reveal the smallest details. But this does not mean you should do it.
The amount of details you show across the scene is only one aspect of a good photograph: contrast is the other part.
Flattening the image by reducing the contrast between the original bright and dark areas is often bad practice. It makes the image look less natural, difficult to understand and not really appealing.

A flat HDR photograph of the ruin of Aulne Abbey
A flat HDR shows very little contrast across the scene and looks fake.

It is best to retain some contrast to keep the shot interesting.

A photograph of the ruin of Aulne Abbey.
With lighter editing and by retaining some contrast, you can keep a more interesting and natural look.

Black Clouds

Another common HDR mistake in landscape photography is to allow the clouds to go black.

Black puffy clouds on a sunny afternoon over fields. Over processed HDR photography.
Black puffy clouds on a sunny afternoon. This is a perfect example of how NOT to edit your HDR shots.

For sure, black clouds are real in bad weather, but the puffy clouds scattered in a blue sky are mostly white. You should keep them as such in your HDR image.

Calm and bright countryside landscape using HDR photography
This is much better editing and clouds look natural.

Halos

Halos around highly contrasted edges are the first indicator that you have over-processed your image by boosting the contrast and clarity too much. Those halos are typical of too many HDR images posted online and are, simply put, rubbish.

An over processed HDR photograph of Maredsous Abbey with black clouds, halos, and overcooked looks.
This photo is the sum of all editing mistakes you can do with HDR: black clouds, halos, and overcooked looks.

A more gentle approach to editing will make for a more pleasant image, with no halos.

A photo of Maredsous Abbey on a clear overcast day
No halos are visible in this photo.

Conclusion

You should learn to use high dynamic range because you’ll find it useful in so many situations. Just remember that you don’t need to create unrealistic HDR images. Instead, use our tips to help you create natural results.

Check out our post on how to use tone mapping next!

For in-depth knowledge on how to edit in Lightroom, take a look at our Effortless Editing course!

Show Comments (0)
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]